自学内容网 自学内容网

docker多阶段镜像制作,比如nginx镜像,编译+制作

镜像制作

nginx源码包

nginx源码拷贝容器

编译要用到gcc make , 以及扩展工具 pcre openssl

#  "pcre"    perl compatibal regulaer expression

刚开始,可以两个终端,

一个手工操作(编译安装、拷贝、环境变量等),

一个写Dockerfile

手工操作指令转换Dockerfile

./configure 配置时候两个核心参数

]# ./configure --help  |  grep  pcre
  --without-pcre                     disable PCRE library usage
  --with-pcre                        force PCRE library usage
  --with-pcre=DIR                    set path to PCRE library sources
  --with-pcre-opt=OPTIONS            set additional build options for PCRE
  --with-pcre-jit                    build PCRE with JIT compilation support
  ]# ./configure --help  |  grep  ssl
  --with-http_ssl_module             enable ngx_http_ssl_module
  --with-mail_ssl_module             enable ngx_mail_ssl_module
  --with-stream_ssl_module           enable ngx_stream_ssl_module
  --with-stream_ssl_preread_module   enable ngx_stream_ssl_preread_module
  --with-openssl=DIR                 set path to OpenSSL library sources
  --with-openssl-opt=OPTIONS         set additional build options for OpenSSL

$PATH 是,指令寻址变量执行命令依靠这个变量查找

要是变量里面找到命令可以直接执行要是找不到不能执行

nginx目录变量里面可以

export PATH=${PATH}:/usr/local/nginx/sbin # 拼接

Dockerfile文件nginx放在前台执行

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

多阶段镜像制作就是一个nginx编译好然后利用这个一个nginx镜像

java软件需要

git pull 下载代码

maven 编译

这时候出来软件包。

然后才能制作镜像

这个多阶段镜像制作。

docker to docker 就是多阶段镜像制作镜像制作多个阶段

通过as参数容器起名字

 ~]# cat nginx/Dockerfile 
FROM mylinux:latest as builder
ADD nginx-1.22.1.tar.gz  /
WORKDIR /nginx-1.22.1
RUN dnf -y install gcc make  pcre-devel  openssl-devel
RUN  ./configure --prefix=/usr/local/nginx  --with-pcre  --with-http_ssl_module
RUN  make && make install
RUN  echo  'this is for nginx test'  >  /usr/local/nginx/html/index.html

FROM mylinux:latest
RUN yum -y install pcre-devel openssl-devel  && yum clean all
COPY --from=builder /usr/local/nginx /usr/local/nginx
ENV PATH=${PATH}:/usr/local/nginx/sbin
WORKDIR /usr/local/nginx
EXPOSE 80/tcp
CMD ["nginx", "-g", "daemon off;"]


~]# docker inspect web | grep  172
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",


~]# curl  http://172.17.0.2
this is for nginx test

上面容器里面进行编译编译好软件包拷贝下面镜像里面进行配置,制作镜像

单阶段镜像比较

为了镜像更加精简更加,所以采用多阶段制作镜像,

不把编译工具放在镜像里面

编译工具就是编译工具镜像制作就是镜像制作

这个就是多阶段镜像制作

两个阶段第一个阶段编译第二个阶段镜像制作

两个阶段合起来需要源码Dockerfile可以完成镜像制作

部署java程序的时候,经常用到。

java的所有程序都得maven一下,不maven编译的话,不是jar包,运行不了。

所有java程序一个编译

多阶段制作镜像好处上面编译可以

下面制作镜像时候不是一个镜像

上面镜像可能编译工具代码拉下直接编译

下面打完包直接运行上面关系

多阶段制作镜像也叫docker to docker,能熟练运用,可以快速做出自定义镜像,方便适用于生产环境。


原文地址:https://blog.csdn.net/2401_84019227/article/details/142379651

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!