Docker多阶段构建
发表于|更新于|容器
|浏览量:
构建 Docker 镜像的时候,我们可以在机器上直接构建,也可以使用容器来构建,保证环境的统一性, 通过容器来构建会有一个问题,就是构建使用到的工具并不需要带入到真正的运行环境, 比如说使用 nodejs 的前端项目, 构建的时候需要 nodejs 或者 npm, 但是运行的时候需要的是 nginx. 多阶段构建即为构建完成后直接将代码塞进运行容器, 不会带入构建环境.
编写 Dockerfile
vim Dockerfile
1 | FROM node:14.20.1-buster AS build |
文章作者: 张理坤
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 杂烩饭!
相关推荐
2026-02-27
离线安装Docker
下载解压离线二进制包下载地址 官方地址:https://downrload.docker.com/linux/static/stable/x86_64/ 阿里云镜像地址:https://mirrors.aliyun.com/docker-ce/linux/static/stable/x86_64/ 1234wget https://mirrors.aliyun.com/docker-ce/linux/static/stable/x86_64/docker-24.0.9.tgztar xf docker-24.0.9.tgzmv docker/* /usr/bin/ 创建 systemd 配置1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465cat > /usr/lib/systemd/system/containerd.service << EOF[Unit]Desc...
2025-04-05
安装插件方式来运行grafana-image-renderer
安装可以使用命令: 1grafana-cli plugins install grafana-image-renderer 如果不能正常访问网络,或者下载速度太慢,可以使用离线包:到这里https://grafana.com/grafana/plugins/grafana-image-renderer/?tab=installation下载离线包,然后放到 plugins 文件夹下。需要注意下 plugins 文件夹的位置,可能使用命令安装的路径和真实的 plugins 目录不一致。 如果插件启动失败,报错:可以检查下 plugins/grafana-image-renderer/chrome-headless-shell/linux-136.0.7101.0/chrome-headless-shell-linux64 这个程序能否正常运行,如果报错 需要安装 apt install -y libasound2t64 完整配置容器Dockerfile: 12345678910111213141516171819202122232425262728293031323334353...

2025-10-13
使用 Docker 搭建单节点 Elasticsearch 学习环境
一般来说,学习 ES 都是自己先搭建几台虚拟机,然后在虚拟机里部署 ES 集群,这样做资源消耗比较大,一般的电脑都没有这么高的配置,我们可以使用 Docker 来快速部署 Elasticsearch,这里搭建单节点: 启动 Elasticsearch123456789101112131415docker network create elasticsearch# 保证目录权限正确mkdir es-data es-logssudo chown -R 1000 es-data es-logsdocker run -d --name elasticsearch \ -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ -e "discovery.type=single-node" \ -v "$(pwd)"/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro \ -v "$(pwd)...

2025-03-24
java容器entrypoint.sh参数传递的隐藏陷阱
构建容器镜像对运维来说已经轻车熟路了,但是最近遇到个问题百思不得其解,准确的说就是手动执行 java -jar 带上所有参数,可以正常启动,但是打包成镜像就会报错: 先附上 entrypoint.sh 123456789101112131415161718192021222324252627#!/bin/bashif [ -n "$JVM_PARAM" ];then echo "JVM_PARAM: $JVM_PARAM"else JVM_PARAM="-Xms2g -Xmx2g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"fiif [ -n "$JVM_OPTS" ];then echo "JVM_OPTS: $JVM_OPTS"else JVM_OPTS="-XX:+UseConcMarkSweepGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiating...
2026-02-27
Docker容器间优雅的互联
本文主要介绍如何优雅的让 Docker 容器和 Docker 容器之间相互通信,以及 Docker 容器如何和宿主机进行网络通信。 容器间网络通信docker 容器间通信常见的方式是使用 –link 进行连接,但是 Docker 已经弃用这种方式,并且容器数量一旦一多,–link 会显得很乱。官方推荐使用自定义网络来进行互联。 创建自定义网络1docker network create my-network 创建容器使用自定义 network比如一个 nginx 容器需要访问 php 容器 12docker run -p 80:80 --network my-network nginxdocker run --name php --network my-network php 这个时候 nginx 可以直接通过 php 来访问 php 容器,打开/etc/hosts 可以发现是 docker 自动帮你添加了解析 容器访问主机服务可以使用容器的网关 IP 来访问(nat 网络),不过使用 ip 不优雅,旧版本的 Docker 可以使用 host.docker...
2026-02-27
快速搭建ipsec Vpn
安装 Docker12curl -fsSL get.docker.com | bashsudo usermod -aG docker $USER 启动服务123456789docker run \ --name ipsec-vpn-server \ --restart=always \ -v $(pwd)/ikev2-vpn-data:/etc/ipsec.d \ -p 500:500/udp \ -p 4500:4500/udp \ -d --privileged \ --restart=always \ hwdsl2/ipsec-vpn-server 将 ikev2-vpn-data 文件复制到本地在 ikev2-vpn-data 目录中,证书或配置文件的位置: 操作系统 文件名 备注 Windows 和 Linux vpnclient.p12 Windows10 & 11 按照下文配置 VPN Android vpnclient.sswan 安卓需要安装 strongSwan 软件 Apple 设备 vpnclient.mob...
评论
公告
此博客为我记录运维工作总结所用,供网友阅读参考,如有侵权,请通知我,我会核实后进行处理。
欢迎加入技术交流群: