docker确实好用,通过使用中的摸索,优化了一下使用步骤:
特别说明:
1.容器的构建、启动、进入、打包成文件,都可以通过shell脚本操作,不用每次键入完整的docker指令;
2.支持将容器打包成tar格式的镜像文件,省去Dockerfile的编译时间;
3.dockerfile已做容器层压缩,进而缩小镜像的体积;
4.run.sh中的脚本,最后一个必须是阻塞的,如果都是nohup ... &,会导致容器启动为以“0”的状态码退出,无法成功启动;
5.由于Dockerfile中的centos镜像永远是最新的,可能导致php的epel-release yum源无法正常使用;如果遇到这种情况,把安装完nginx之后的脚本都去除,只生成一个有nginx的镜像,然后进入nginx测试php的yum源,哪个yum源能用,再更新到Dockerfile中
6.容器成功启动后,需要进入容器,通过git将项目代码拉取到"/usr/share/nginx/php"目录,然后根据域名和端口号配置"/etc/nginx/nginx.conf"文件,然后执行“/usr/sbin/nginx -s reload”,让配置生效;
7.这些脚本,只用于搭建环境,代码部署,也可直接进入容器内进行代码管理操作。
8.更新了“Dockerfile”,支持PHP项目代码部署,将PHP代码复制到容器中“ /usr/share/nginx/php”目录下
9.用“nginx.conf”替换“default.conf”,修复容器运行后跳转50x.html页面;修复后,将默认执行“ /usr/share/nginx/php”目录下“index.php”文件;
10. docker run 命令中增加“--restart=always”,实现docker服务重启时,自动启动容器;
11. php 安装命令增加“--skip-broken”,解决包版冲突。
#----------------华丽分割线----------------
各脚本内容如下,正常情况,COPY走应该能直接用:
### 以下内容保存到文件“Dockerfile”
#version 20201118_1620
#just for building "nginx+php7.2.24+redis5.0.3+git" environment, not include project code
FROM centos
MAINTAINER mail:805888106@qq.com
USER root
#add set nginx repo url
ADD nginx.repo /etc/yum.repos.d
RUN yum -y install nginx
#prepare to install php
RUN mkdir -p /run/php-fpm && yum -y remove epel-release && rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm && rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm && echo "error..." > /usr/share/nginx/html/index.html && rm -rf /var/cac