Docker自学纪实(五) 使用Dockerfile构建php网站环境镜像

一般呢,docker构建镜像容器的方式有两种:一种是pull dockerhub仓库里面的镜像,一种是使用Dockerfile自定义构建镜像。

很多时候,公司要求的镜像并不一定符合dockerhub仓库里面的镜像,这时候我们就要自己构建镜像了,通过编辑dockerfile文件,来实现我们对镜像的要求。

无论是服务器更换或者是增加新的网站节点,只要把这个镜像放进私有仓库,新的服务器拉取到自己本地就可以使用,是不是很方便呢?

因为很多公司的网站平台是基于php语言来写的,我就举个例子:

构建一个wordpress的php网站环境的镜像。

镜像构成:Httpd、MySQL、PHP、wordpress。
首先呢,先写一个简单的控制脚本:

1 [root@smbands~]#vi start.sh
2 service httpd start #开启httpd服务。
3 service mysqld start #开启MySQL。
4 mysqladmin -uroot -p $MYSQL_ROOT_PASSWORD 更改默认MySQL登录密码。
5 tail -f #持续运行

编写Dockerfile文件

 1 [root@smbands~]#vi Dockerfile #创建一个空Dockerfile文件。 
 2 
 3 FROM centos:6 #基于哪个操作系统
 4 MAINTAINER Smbands #作者名称
 5 RUN yum -y install httpd php php-gd php-mysql mysql mysql-server #使用yum安装一些必要的服务。
 6 ENV MYSQL_ROOT_PASSWORD 123123 #使用变量给MySQL设置密码。
 7 RUN echo "" > /var/www/html/index.php #创建php测试页。
 8 ADD start.sh /start.sh #添加一个sh脚本。
 9 RUN chmod +x /start.sh #给脚本赋予可执行权限。
10 
11 ADD wordpress-4.9.4-zh_CN.tar.gz /var/www/html #将wordpress压缩包下载到本地,并解压到/var/www/html目录。
12 COPY wp-config-simple.php wp-config.php #将wordpress解压后的wp-config-simple.php文件复制一份重命名为wp-config.php。
13 COPY wp-config.php /var/www/html/wordpress #将文件拷贝到网站发布路径。
14 VOLUME ["/var/lib/mysql"] #将MySQL数据库目录挂载到容器。
15 
16 CMD /start.sh #执行脚本
17 EXPOSE 80 3306 #开放 80 和3306端口

构建镜像容器
 1 [root@smbands~]#docker build -t wordpress:v1 Dockerfile的路径 #说明一下 -t 给镜像命名 wordpress:v1 镜像名:TAG 。 
等10分钟左右的时间镜像就可以构建完成。
然后你可以在镜像列表里面看到你构建的wordpress:v1的镜像

1 [root@smbands~]#docker images
2 REPOSITORY   TAG      IMAGE      ID     CREATED       SIZE
3 wordpress     v1   29364aa4074d About   an hour ago  406 MB

启动镜像

1 [root@smbands~]# docker run -itd --name wordpress -p 80:80 wordpress:v1
2 [root@smbands~]#docker ps
3 CONTAINER          ID         IMAGE      COMMAND      CREATED           STATUS        PORTS                                     NAMES
4 fe55c05eb309 wordpress:v1 "/bin/sh -c /start.sh"     About an hour ago     Up    About an hour 0.0.0.0:80->80/tcp, 3306/tcp    wordpress

启动容器后打开浏览器访问宿主机的IP就可以看到效果了。
把镜像放到私有仓库,今后的工作中,如果公司服务器新增节点或者更换服务器,直接将镜像拉取过来就可以直接使用了。

猜你喜欢

转载自www.cnblogs.com/Smbands/p/10150449.html