前面做了一个php的dockerfile。这里把这个服务在kubenetes中启动起来,我们需要在原有的镜像拉取后把代码copy到容器中,然后启动容器后在启用apollo和php-fpm,最后在启动nginx服务。这样的好处是能够在健康检查之前,把本地的服务注册信息可以拉取过来。然后启动,对外提供服务等等。
php_star="/usr/sbin/php-fpm" nginx_star='/usr/local/nginx/sbin/nginx -g "daemon off;"' apollo_start="php /usr/local/nginx/html/apollo-php-client/apollo.php >/dev/null 2>&1 &" apollo='`ps -ef |grep -w apollo|grep -v grep|wc -l`' echo -e " #!/bin/bash while true do if [ ${apollo} -le 0 ];then echo "testPro is not run" sh /usr/local/nginx/html/apollo-php-client/start.sh else break fi done ${php_star} ${nginx_star} " > enpoint.sh cat << EOF > Dockerfile FROM .aliyuncs.com/reatil-harb/web-image-service:1.0 COPY . /usr/local/nginx/html/ RUN chown -R www:www /usr/local/nginx/html/ WORKDIR /usr/local/nginx/html/apollo-php-client RUN rm -rf vendor RUN composer require multilinguals/apollo-client --ignore-platform-reqs RUN chmod +x start.sh EXPOSE 80 EXPOSE 443 EXPOSE 9000 COPY enpoint.sh /usr/sbin/enpoint RUN chmod +x /usr/sbin/enpoint CMD ["/bin/bash","enpoint"] EOF
上面是启动脚本,因为apollo做了一个循环,这里的循环是为了确定apollo能够获取到信息,终止循环,最后是启动php-fpm和nginx服务,把这个脚本copy到容器后,直接启动脚本即可,这里需要注意的是启动顺序,如果先启动nginx就会出现用户请求过来了,但是服务还没有拉取到apollo的信息,造成用户请求不可用。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏