七、实例Dockerfile创建nginx镜像

作者: 温新

分类: 【Docker】

阅读: 3196

时间: 2020-08-10 14:17:15

基础Dockerfile构建nginx镜像

# 基于centos构建
FROM centos:8

# 说明信息
LABEL author=ziruchu

# 安装依赖
RUN yum -y install gcc gcc-c++ glibc make autoconf openssl openssl-devel 

# 创建用户与组
RUN groupadd nginx
RUN useradd -g nginx nginx -M -s /sbin/nologin

# 添加本地内容到镜像并解压
ADD nginx-1.17.4.tar.gz /usr/local/src

# 切换至工作目录
WORKDIR /usr/local/src/nginx-1.17.4

# 编译
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-pcre \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-mail \
--with-mail_ssl_module \
--with-stream_ssl_module

# 安装
RUN make && make install

# 暴露访问端口
EXPOSE 80

# 设置环境变量
ENV PATH $PATH:/usr/local/nginx/sbin

CMD ["nginx", "-g", "daemon off;"]

创建镜像

格式

docker build [OPTIONS] PATH | URL |

[options]

  • --build-arg=[] 设置镜像创建时的变量
  • -f 指定要使用的Dockerfile路径
  • -t 镜像名字及标签
docker build -t imageName:tagName dir

# imageName:给镜像起的名字
# tagName:给镜像起的标签名
# dir Dockerfile所在目录

关于其它参数,请查阅文档

案例

docker build -t ziruchu:nginx:v1 .

# . 表示当前目录

实例:构建上述Dockerfile文件

1)构建镜像

docker image build -t nginx:1.17.4  .

2)查看构建的镜像

docker images

若有,则构建成功

3)启动构建好的镜像

docker run -d --name web -p 80:80 nginx:1.17.4

4)输入IP地址进行访问

说明:这些都学习过程中亲自测试过的,一切正常。如果有所疑问,欢迎一起交流学习。

总结

关于Dockerfile构建镜像,其实和源码编译安装非常像,从上面的构建文件来看,用Dockerfile指令来运行执行命令,但是又与源码安装有些不同,这些不同,我暂时没法很好的说出来,就是那句“只可意会不可言传。”。

关于Dockerfile的记录,到这里就结束了,但不会停止。我是做PHP开发的,当然就少不了环境的搭建了。关于Docker搭建LNMP环境,其实我之前已经记录过了,到现在快忘了,不过没有关系,后面使用Dockerfile重新去构建一遍。

2020-08-10

请登录后再评论