前面做了一个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的信息,造成用户请求不可用。

您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏