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-03-24
树莓派常用操作记录
安装 Docker替换成清华源 清华源地址https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/ 123echo "deb [arch=armhf] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian \ $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list 12sudo apt-get updatesudo apt-get install docker-ce 替换软件源中科大源https://mirrors.ustc.edu.cn/help/raspbian.html清华源https://mirrors.tuna.tsinghua.edu.cn/help/raspbian/

2025-05-28
PHP应用容器化遇到的一些问题
这里以 WordPress 为例,我们不用官方的镜像,而是用 php 镜像 php 官方有个自带 apache 的版本,如:php:8.1.32-apache, 建议用这个版本,这个版本不用考虑 Nginx 和 php 的文件共享问题,启动容器: 1234docker run --rm -d --name php-test \ -v ./app:/var/www/html \ -p 8080:80 \php:8.1.32-apache 自定义 php 配置文件比如调整 PHP 上传文件大小限制 docker run 的时候挂载 php.ini 123docker run ... \ -v ./php.ini:/usr/local/etc/php/conf.d/php.ini \... php.ini 增加 1upload_max_filesize = 1024M 安装 Core 扩展这个时候说明 php 正常工作了,但是缺扩展。 123FROM php:8.1.32-apacheRUN docker-php-ext-configure mysqli \ &&...
2026-03-24
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’ ) ) 前面添加: 123$_SERVER['HTTPS'] = 'on';define('FORCE_SSL_LOGIN', true);define('FORCE_SSL_ADMIN', true); 如果是官方 Docker 容器的话强烈建议 Nginx 的 location /里面添加一个...
2026-03-24
Dockerfile中ADD文件的路径问题
首先看一个案例 当前目录的文件如下: 12345678[root@devops_build watcher_svr]# tree.├── 1├── 2│ └── 3└── Dockerfile1 directory, 3 files Dockerfile 文件内容如下: 123FROM node:14.20.1-busterADD * /code/WORKDIR /code 本意是想把当前目录下的所有文件放到容器内的 /code 目录, 这个时候使用 docker build 后无法启动, 进入容器, 打开 /code 一看: 123456789[root@devops_build watcher_svr]# docker run -it test bashroot@cb7543054ef2:/code# ls -altotal 12drwxr-xr-x 2 root root 4096 Sep 22 08:47 .drwxr-xr-x 1 root root 4096 Sep 22 08:47 ..-rw-r--r-- 1 root root 0 Sep 22 0...

2026-03-24
通过docker容器查看run命令
公司有一台服务器上运行着一个服务,通过 docker start 启动,已经没有文档记录如何搭建的了。现在需要迁移,记录一下获取 docker run 命令的方法 通过模版处理 docker inspect 的数据来获取使用 runlike 来获取模版文件来自https://gist.githubusercontent.com/efrecon/8ce9c75d518b6eb863f667442d7bc679/raw/run.tpl 假设容器名是 mysql, 命令后面可以跟容器名或者容器 id。命令如下: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161...
2026-03-24
快速搭建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...
评论
公告
此博客为我记录运维工作总结所用,供网友阅读参考,如有侵权,请通知我,我会核实后进行处理。
欢迎加入技术交流群: