基于 CentOS 基础镜像构建 php-fpm 中间件镜像

本文衔接上一篇文章, 基于 CentOS 基础镜像构建 php-fpm 中间件镜像。

小贴士:
    新的 Docker 镜像都是使用一个名为 Dockerfile 的文件构建的,该文件指定的元素包括但不限于:

  • FROM:新镜像所基于的基础镜像,因为它继承了基础镜像的所有层
  • ADD/COPY:需要复制到新镜像的文件
  • EXPOSE:新镜像应公开的网络端口
  • RUN:应在构建新镜像时运行的 命令,比如安装额外的包
  • ENV:可在使用该镜像启动容器时设置的环境变量
  • ENTRYPOINT:在容器启动时运行的命令

中间件镜像最重要的区别在于: 新增了 ONBUILD为 Dockerfile 传递给用于构建新镜像docker build命令;

下面是基于 CentOS 基础镜像构建 php-fpm 中间件镜像的全部过程 。。。

好文章 记得收藏+点赞+关注额 !!!

---- Nick.Peng


一、撰写Dockerfile

  • 一个 docker 镜像的好坏取决于 Dockerfile 写的好不好,写好的Dockerfile以及解释如下:

    #
    # MAINTAINER        Nick,Y.Peng <nickyp@dockerstu.com>
    # DOCKER-VERSION    1.6.2
    #
    # Dockerizing php-fpm: Dockerfile for building php-fpm images
    #
    # 基于上一篇创建的centos:7.1作为此中间件镜像的基础镜像
    FROM       csphere/centos:7.1
    MAINTAINER Nick,Y.Peng <nickyp@dockerstu.com>	# 指明该镜像的维护者
    
    # Set environment variable
    ENV     APP_DIR /app
    
    # 创建镜像要执行的命令,这里主要是安装一些依赖和环境
    RUN     rpm --rebuilddb &&  yum -y swap -- remove fakesystemd -- install systemd systemd-libs && \
            yum -y install nginx php-cli php-mysql php-pear php-ldap php-mbstring php-soap php-dom php-gd php-xmlrpc php-fpm php-mcrypt && \
            yum clean all
    
    # 添加nginx配置文件到镜像指定目录
    ADD     nginx_nginx.conf /etc/nginx/nginx.conf
    # 添加nginx默认配置文件到镜像指定目录
    ADD     nginx_default.conf /etc/nginx/conf.d/default.conf
    
    # 添加php配置文件到镜像指定目录
    ADD     php_www.conf /etc/php-fpm.d/www.conf
    RUN     sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php.ini
    
    # 给上面app环境变量创建app目录,并在这个app目录下用phpinfo()创建一个info.php文件,用来测试nginx与info.php之间能不能正常连接
    RUN     mkdir -p /app && echo "<?php phpinfo(); ?>" > ${APP_DIR}/info.php
    
    # 对外开放80和443端口,http协议默认80,https协议默认443
    EXPOSE  80 443
    
    # 给进程管理工具添加nginx配置文件
    ADD     supervisor_nginx.conf /etc/supervisor.conf.d/nginx.conf
    # 给进程管理工具添加php-fpm配置文件
    ADD     supervisor_php-fpm.conf /etc/supervisor.conf.d/php-fpm.conf
    
    # ONBUILD:在中间件镜像的Dockerfile里面并不生效,而是在用这个中间件镜像build成应用镜像时才生效
    # (即:FROM csphere/php-fpm:5.4 时才生效),提升发布效率
    ONBUILD ADD . /app
    ONBUILD RUN chown -R nginx:nginx /app
    

二、构建Docker镜像

  • 执行命令: docker build -t csphere/php-fpm:5.4 .
  • 命令解析: 后面.的意思是指 Dockerfile 所在目录的相对路径,这里 Dockerfile 在当前路径下,所以用.表示,如果不在当前路径,就写相对路径,例如:./xxx
  • 构建成功, 如图:
    在这里插入图片描述
  • 验证是否构建成功: 在终端输入命令:docker images,如下图 php-fpm:5.4 已被我们成功构建;
    在这里插入图片描述

三、创建Docker容器

  • 通过我们刚刚构建的 Docker 镜像,创建 Docker 容器;
  • 创建容器命令如下:
    docker run -d -p 8080:80 --name website csphere/php-fpm:5.4
  • 查看是否创建成功:
    输入命令:docker ps -a,如图,website 容器已被成功创建;
    在这里插入图片描述
  • 验证nginx服务是否正常:
    • 用我们刚build时创建的info.php文件,来验证其与nginx之间是否成功建立连接;
    • 打开浏览器,在地址栏输入:http://服务器IP地址:创建容器时映射的端口8080/info.php,如下图所示能访问成功,即证明nginx服务正常;
      在这里插入图片描述
  • 验证nginx方法二:
    • 进入运行的website容器里面,查看服务状态
    • 在服务器终端输入:docker exec -it 正在运行容器的ID /bin/bash,使用supervisorctl进程管理工具来查看服务启动状况
    • 查看完成后使用exit退出容器
      在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值