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-07-14
Nginx反向代理wordpress并启用https
反向代理 wordpress 遇到了问题,nginx 不启用 https,反向代理没问题(wordpress 和 nginx 之间走 http),但是 nginx 启用了 https,页面上的样式就没有了,f12 查看,发现 js 和 css 走的还是 http,所以 404 根本原因:wordpress 代码里没有开启 https,(wordpress 认为自己是被 http 访问的,毕竟 nginx 是通过 http 来访问它的) 修改 wordpress 配置 感觉这种方案最靠谱,谁的债谁来还。。 在 wp-config.php 的 if ( ! defined( ‘ABSPATH’ ) ) 前面添加: 如果是官方 Docker 容器的话强烈建议 Nginx 的 location /里面添加一个头: wordpress 官方 Docker 镜像会检测这个头来判断是否代码里开启 https 原因是在:wp-config.php 里面, 为了开启下面的参数 参考:https://github.com/docker-library/wordpress/...
2026-07-14
Kubernetes 绑定Hosts的正确姿势
有的时候我们需要在容器里面绑定 hosts,比如我们用 logstash 需要消费 kafka 消息,但是 kafka 监听的地址是 hostname,这个时候就需要绑定 hosts(规范一点是做解析)在容器里面绑定 hosts 常见的方法一种是挂载主机的 hosts 文件,一种是修改容器的启动 CMD,每次启动修改 hosts,这两种方法都有个缺点,就是不受 kubelet 管理了,默认的 hosts 内容也会被覆盖掉在 k8s 环境下有更好的解决方案:那就是让 k8s 自己来管理 使用 hostAliases 来绑定 hosts 进入容器查看 hosts 文件 这个 hosts 包括两个部分,一部分是容器自带的 hosts,另一部分是我们自己添加的 在 docker 下绑定 hosts运行时候修改docker 可以通过 –add-host 参数来添加 hosts 信息到容器的/etc/hosts 文件中 构建时修改Dockerfile 中,可以在 CMD 命令下进行修改,在 RUN 里面修改会提示文件只读无法修改。 在 docker-c...
2026-03-01
使用kubeadm部署一套高可用k8s集群1.34 for Ubuntu
基于 ubuntu 使用 kubeadm 搭建集群, centos部署文档, 有疑问的地方可以看 官方文档 准备机器 我的机器详情如下, 配置至少为 4C4G hostname IP 作用 master1 10.0.0.11 k8s master 节点 master2 10.0.0.12 k8s master 节点 master3 10.0.0.13 k8s master 节点 worker1 10.0.0.21 k8s worker 节点 worker2 10.0.0.22 k8s worker 节点 每台机器都做域名解析,或者绑定 hosts(可选但建议) 基础环境配置 基础环境是不管 master 还是 worker 都需要的环境 禁用 swap 确保每个节点上 MAC 地址和 product_uuid 的唯一性 sudo cat /sys/class/dmi/id/product_uuid 修改 hostname 允许 iptables 检查桥接流量 关闭防火墙 安装 runtimeContainerdDocker先决条...
2026-07-14
Dockerfile中ADD文件的路径问题
首先看一个案例 当前目录的文件如下: Dockerfile 文件内容如下: 本意是想把当前目录下的所有文件放到容器内的 /code 目录, 这个时候使用 docker build 后无法启动, 进入容器, 打开 /code 一看: 会发现, 本来 3 这个文件应该是在 2 这个文件夹内的, 现在统一都跑到了上级目录了, 文件路径完全变了. 自然无法启动. 可以做如下修改:
2026-07-14
快速搭建ipsec Vpn
安装 Docker 启动服务 将 ikev2-vpn-data 文件复制到本地在 ikev2-vpn-data 目录中,证书或配置文件的位置: 操作系统 文件名 备注 Windows 和 Linux vpnclient.p12 Windows10 & 11 按照下文配置 VPN Android vpnclient.sswan 安卓需要安装 strongSwan 软件 Apple 设备 vpnclient.mobileconfig 导入描述文件即可 windows 客户端配置导入证书 证书会导入到 受信任的根证书颁发机构 IKEv2 VPN CA 另外,你也可以手动导入 .p12 文件。在导入证书后,你必须确保将客户端证书放在 “ 个人 -> 证书 “ 目录中,并且将 CA 证书放在 “ 受信任的根证书颁发机构 -> 证书 “ 目录中。 创建 VPN 连接在 Windows 计算机上添加一个新的 IKEv2 VPN 连接。对于 Windows 8.x 和 10,推荐从命令提示符运行以下命令创建 VPN 连接,以达到更佳的安全...
2026-07-14
Docker常用配置
docker 安装官方安装脚本 阿里云安装(centos) docker-compose 安装 免 root 执行 docker 命令 顺便确定一下 sock 文件有没有权限(默认是有的), 退出账户重新登录一下即可生效 阿里云 Docker 加速 或者 常用操作一次性删除所有的容器 一次性删除所有的镜像 一次性删除未打标签的镜像 一次性删除所有 volume Docker 进入容器 查看容器详情 启动容器 进入一个运行中的容器 打 tag 查看容器占用磁盘空间 查看容器 id 查看日志文件 容器备份还原镜像的备份还原 commit 将容器保存成镜像 将镜像导出成 tar (镜像是分层的,可以回滚,) 从 tar 导入镜像(镜像备份下来的 tar) 注意:以上会备份镜像的多层。 容器的备份还原 备份容器 还原成镜像 注意:备份的只是一层镜像 容器的日志日志位置docker 日志建议输出控制台,控制台日志存储在主机上 先查看 Logging Driver 类型,默认应该是 json 格式 jso...
公告
此博客为我记录运维工作总结所用,供网友阅读参考,如有侵权,请通知我,我会核实后进行处理。
欢迎加博主微信,进微信运维技术交流群:


