Dockerfile编译安装nginx

1, 编辑Dockerfile文件,顺便演示一下COPY与ADD的区别

FROM centos
RUN mkdir -p /test/{copy,add}
COPY test1 /test/copy                  # 使用COPY把test1添加到容器的/test/copy目录下
COPY nginx-1.17.7.tar.gz /test/copy    # 使用COPY把nginx压缩文件添加到容器的/test/copy目录下
ADD nginx-1.17.7.tar.gz /test/add      # 使用ADD把nginx压缩文件添加到容器的/test/add目录下 
WORKDIR /test/                         # 配置登录到容器的默认目录
RUN yum install -y vim zlib-devel openssl-devel gcc gcc-c++ pcre-devel make
RUN cd /test/add/nginx-1.17.7 && ./configure --prefix=/usr/local/nginx && make && make install
ENV NGINX /usr/local/nginx/sbin/       # 配置nginx环境变量
ENV PATH $PATH:$NGINX                  # 添加nginx环境变量到系统环境变量
EXPOSE 80                              # 指定对外暴漏的端口
CMD /usr/local/nginx/sbin/nginx        # 启动nginx

2, 构建Dockerfile文件

docker build -t nginx .
-t    指定镜像的名称
"."   这个"点"是查找当前目录下的Dockerfile文件,如果路径或者文件名不对需要使用‘-f’来指定Dockerfile文件

Snipaste_2020-01-04_13-43-52.png
看到最后一样出现successfully字样说明构建成功!

3, 启动容器,并使用-p映射宿主机端口到容器

docker run -d -p 80:80 --name nginx nginx
-d        放在后台运行
-p        映射宿主机端口到容器内部
--name    为当前容器起名
nginx     指定名为nginx的镜像进行构建容器

Snipaste_2020-01-04_13-31-28.png
可以看到已经可以正常访问到容器内新建的nginx了

4, 验证COPY与ADD的区别

[[email protected] ~]# docker exec -it nginx /bin/bash

Snipaste_2020-01-04_14-00-03.png
最后得出的结论是: COPY只是简单的把文件复制到容器,而ADD在复制过去的基础上进行了解压缩操作!