七、实例Dockerfile创建nginx镜像
基础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
请登录后再评论