最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Docker 镜像构建脚本如何写
时间:2026-08-11 08:48:49 编辑:袖梨 来源:一聚教程网
Dockerfile是构建镜像的唯一源文件,核心在于选对基础镜像(如python:3.11-slim-bookworm)、合并RUN指令减少层数、用USER或COPY--chown降权运行、避免硬编码敏感信息,并配合shell脚本封装构建、打标、推送等流程,支持多阶段构建与环境变量分支,确保镜像最小化、安全化、可复现。
写 Docker 镜像构建脚本,核心是写好 Dockerfile,再辅以简单 Shell 脚本封装构建、打标签、推送等操作。不需要复杂工具,清晰分层、语义明确、避免硬编码就足够可靠。
写好 Dockerfile 是基础
Dockerfile 是构建镜像的唯一源文件,关键在于:选对基础镜像、最小化层数、合理利用缓存、安全清理中间文件。
- 用具体版本号代替
:latest,比如python:3.11-slim-bookworm,避免意外升级 - 合并多条
RUN命令(用&&连接),减少镜像层数,例如安装依赖和清理缓存写在同一行 - 用
COPY --chown或USER指令降权运行,别让应用默认以 root 启动 - 敏感信息(如密钥)绝不在
Dockerfile里写死,通过构建参数--build-arg或挂载方式传入
用 shell 脚本封装常用构建流程
把重复操作(如构建、打 tag、推送到 registry)写成 build.sh,提升复用性和可读性。
- 脚本开头检查必要命令是否存在:
command -v docker && command -v git - 用变量定义镜像名、版本、平台等,例如:
IMAGE_NAME="myapp"、TAG="${CI_COMMIT_TAG:-dev}" - 构建时加
--platform linux/amd64显式指定架构,避免本地 M1/M2 机器构建出不可部署的镜像 - 推送前先
docker login(或用DOCKER_PASSWORD环境变量配合echo "$DOCKER_PASSWORD" | docker login --username "$DOCKER_USER" --password-stdin)
支持多阶段构建和不同环境
一个项目常需 dev / test / prod 多种镜像变体,靠单一 Dockerfile + 构建参数就能覆盖。
- 在
Dockerfile里用ARG ENV=prod定义环境变量,后续RUN或CMD中按需分支 - 前端项目常用多阶段:第一阶段用
node:18构建静态资源,第二阶段用nginx:alpine托管产物,最终镜像不到 15MB - 后端服务可加
.dockerignore排除node_modules/、__pycache__/、.git等,加快上下文传输
验证和调试不能跳过
构建完不等于能跑通,本地快速验证能省去大量 CI 失败重试时间。
- 构建后立即运行容器测试基本启动:
docker run --rm -p 8080:8080 $IMAGE_NAME:$TAG - 进容器查日志或执行命令:
docker run --rm -it $IMAGE_NAME:$TAG sh -c "ls -l /app && env" - 用
docker history看每层大小,识别臃肿来源;用docker inspect查工作目录、入口命令是否符合预期
相关文章
- 依露希尔星晓氪金吗 依露希尔星晓氪金程度分析 08-11
- 依露希尔星晓立绘如何样 依露希尔星晓立绘介绍 08-11
- 《归零巡礼:亡谍镇魂曲》死亡加长混音版成就攻略分享 08-11
- 洛克王国世界PVP纯火队配队攻略 08-11
- 依露希尔星晓哪个公司的游戏 依露希尔星晓游戏玩法分享 08-11
- 帝国史诗武器推荐有哪些 08-11