👋 欢迎来到吴老二技术博客,专注运维 / 数据库 / 云原生
首页/云原生/正文

Dockerfile启动php服务注册apollo的容器

吴
吴老二
2021-09-06云原生1444 次浏览0 条评论
前面做了一个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的信息,造成用户请求不可用。
文章底部广告位在后台「广告设置」填写广告代码后显示

评论 0

评论需 登录 后发表(注册并验证邮箱)。
还没有评论,来抢沙发~