当前位置: 首页 > news >正文

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.htmlFROM 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,能熟练运用,可以快速做出自定义镜像,方便适用于生产环境。

http://www.lryc.cn/news/444458.html

相关文章:

  • 大语言模型量化方法GPTQ、GGUF、AWQ详细原理
  • 《 C++ 修炼全景指南:十 》自平衡的艺术:深入了解 AVL 树的核心原理与实现
  • SAP 特别总账标识[SGL]
  • 认知杂谈77《简单:通往高手的技巧》
  • 《SmartX ELF 虚拟化核心功能集》发布,详解 80+ 功能特性和 6 例金融实践
  • 9月23日
  • 如何使用Jinja定义dbt宏
  • 深入理解 JavaScript 三大作用域:全局作用域、函数作用域、块级作用域
  • 【门牌制作 / A】
  • Git+Jenkins 基本使用(Basic Usage of Git+Jenkins)
  • 智谱清言:智能语音交互的引领者,解锁高效沟通新体验
  • 前端组件库
  • 后端常用的mybatis-plus方法以及配合querywapper使用
  • 【设计模式】万字详解:深入掌握五大基础行为模式
  • C++ 9.19
  • [Unity Demo]从零开始制作空洞骑士Hollow Knight第五集:再制作更多的敌人
  • 怎么把excel翻译成英文?这些翻译技巧记得收藏
  • 信息技术引领的智能化未来
  • 【QT开发-Pyside】使用Pycharm与conda配置Pyside环境并新建工程
  • vue选项式写法项目案例(购物车)
  • [Linux][进程] 认识进程
  • 如何安装和注册 GitLab Runner
  • 专业学习|动态规划(概念、模型特征、解题步骤及例题)
  • 数据结构与算法 #时间复杂度 #空间复杂度
  • 【多机器人轨迹规划最优解问题】
  • 机器学习及其应用领域【金融领域】
  • 【实战教程】PHP与七牛云的完美对接,你值得拥有!
  • 2024网易低代码大赛 | 想参赛但不知道搭什么?灵感就这么水灵灵地来了!
  • (附源码)基于django的电力工程作业现场物资管理系统的设计与实现-计算机毕设 22067
  • 数据链路层协议 —— 以太网协议