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

ops/2024/9/24 19:06:24/

镜像制作

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.ppmy.cn/ops/115408.html

相关文章

阿里巴巴搜索API返回值:电商市场竞争的新武器含

阿里巴巴搜索API返回值在电商市场竞争中扮演着至关重要的角色,它为企业提供了深入了解市场、分析竞争对手的宝贵资源。以下是对阿里巴巴搜索API返回值及其在电商市场竞争中应用的详细解析,并附上示例代码。 一、阿里巴巴搜索API返回值概述 阿里巴巴搜索…

YOLOv10独家改进:红外场景严重遮挡和重叠目标解决方案 | 一种新的自适应算法轻量级通道分割和变换(ALSS)模块,自适应特征提取优化策略

💡💡💡本文解决什么问题:红外检测场景存在严重遮挡和重叠目标时的局限性的问题点。 💡💡💡提出了一种新的自适应算法轻量级通道分割和变换(ALSS)模块。该模块采用自适应信道分裂策略优化特征提取,并集成信道变换机制增强信道间的信息交换。这改善了模糊特征的提…

【计算机网络篇】数据链路层 功能|组帧|流量控制与可靠传输机制

🧸安清h:个人主页 🎥个人专栏:【计算机网络】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 系列文章目录 【计算机网络篇】计算机网络概述 【计算机网络篇…

C++ prime plus-3-编程练习

#include <iostream>int main() {// 定义转换因子常量const int INCHES_PER_FOOT 12;// 声明变量用于存储用户输入的身高int height_inches;// 提示用户输入身高&#xff08;单位为英寸&#xff09;std::cout << "请输入您的身高&#xff08;单位为英寸&…

【Unity与数据库01】开发者如何选择数据库

在选择数据库时&#xff0c;需要考虑多个因素&#xff0c;包括项目的规模、性能需求、开发团队的熟悉程度、维护成本等。以下是对 MySQL、Oracle 和 SQLite 的简要比较&#xff0c;以帮助你决定哪个更适合你的 Unity 游戏项目。 1. SQLite 优点&#xff1a; 轻量级&#xff1…

如何进行CAESES许可使用分析

随着工程仿真软件在企业中的广泛应用&#xff0c;如何有效进行CAESES许可使用分析成为了企业提升资源利用率、优化运营成本的关键环节。本文将为您介绍如何进行CAESES许可使用分析&#xff0c;帮助您更好地管理和利用软件资源。 一、明确分析目的和指标 在进行CAESES许可使用…

Vue中的 ref、toRef 和 toRefs

ref ref 是创建一个响应式的引用对象。这个对象有一个 .value 属性&#xff0c;用来存储任何类型的值&#xff08;包括基本类型和复杂类型&#xff09;。当这个值改变时&#xff0c;依赖于它的模板或计算属性会自动更新。 import { ref } from vue;const count ref(0); // 创…

运行可执行文件时 ,找不到库

1. ./mx_csmp: error while loading shared libraries: libopencv_flann.so.3.4: cannot open shared object file: No such file or directory 这个错误表明你的系统找不到 libopencv_flann.so.3.4 共享库 查看一下我的系统上安装的是 OpenCV 4.2.0&#xff0c;而问题是缺少…