七、实例Dockerfile创建nginx镜像

作者: 温新

分类: 【Docker】

阅读: 2797

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

基础Dockerfile构建nginx镜像

<span style="box-sizing: border-box;padding-right: 0.1px"># 基于centos构建</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">FROM centos:8</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># 说明信息</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">LABEL author=ziruchu</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># 安装依赖</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">RUN yum -y install gcc gcc-c++ glibc make autoconf openssl openssl-devel </span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># 创建用户与组</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">RUN groupadd nginx</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">RUN useradd -g nginx nginx -M -s /sbin/nologin</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># 添加本地内容到镜像并解压</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">ADD nginx-1.17.4.tar.gz /usr/local/src</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># 切换至工作目录</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">WORKDIR /usr/local/src/nginx-1.17.4</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># 编译</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">RUN ./configure \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--prefix=/usr/local/nginx \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--user=nginx \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--group=nginx \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-pcre \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_ssl_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_v2_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_realip_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_addition_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_sub_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_dav_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_flv_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_mp4_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_gunzip_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_gzip_static_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_random_index_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_secure_link_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_stub_status_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-http_auth_request_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-mail \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-mail_ssl_module \</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">--with-stream_ssl_module</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># 安装</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">RUN make && make install</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># 暴露访问端口</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">EXPOSE 80</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># 设置环境变量</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">ENV PATH $PATH:/usr/local/nginx/sbin</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">CMD ["nginx", "-g", "daemon off;"]</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span>

创建镜像

格式

docker build [OPTIONS] PATH | URL |

[options]

  • --build-arg=[] 设置镜像创建时的变量
  • -f 指定要使用的Dockerfile路径
  • -t 镜像名字及标签
<span style="box-sizing: border-box;padding-right: 0.1px">docker build -t imageName:tagName dir</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># imageName:给镜像起的名字</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># tagName:给镜像起的标签名</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># dir Dockerfile所在目录</span>

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

案例

<span style="box-sizing: border-box;padding-right: 0.1px">docker build -t ziruchu:nginx:v1 .</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"># . 表示当前目录</span>

实例:构建上述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日

请登录后再评论