2.5 Docker镜像构建实战:Dockerfile指令详解与最佳实践
引言
Dockerfile是构建Docker镜像的蓝图。掌握Dockerfile的编写方法和最佳实践,能够构建高效、安全的镜像。本文将详细介绍Dockerfile的各个指令和最佳实践。
一、Dockerfile基础
1.1 什么是Dockerfile
Dockerfile是一个文本文件,包含构建镜像的指令。
1.2 基本结构
# 注释 FROM base_image # 指令 RUN command # ...二、Dockerfile指令详解
2.1 FROM
指定基础镜像。
# 使用官方镜像 FROM ubuntu:20.04 # 使用Alpine(轻量级) FROM alpine:latest # 使用多阶段构建 FROM golang:1.21 AS builder FROM alpine:latest2.2 RUN
执行命令,创建新层。
# 单个命令 RUN apt-get update # 多个命令合并(减少层数) RUN apt-get update && \ apt-get install -y nginx && \ rm -rf /var/lib/apt/lists/* # 使用shell形式 RUN echo "Hello" > /tmp/hello.txt # 使用exec形式(推荐) RUN ["/bin/bash", "-c", "echo Hello > /tmp/hello.txt"]2.3 COPY vs ADD
复制文件到镜像。
# COPY:推荐使用 COPY src/ /app/src/ COPY package.json /app/ # ADD:支持URL和自动解压(不推荐) ADD https://example.com/file.tar.gz /tmp/ ADD file.tar.gz /tmp/ # 自动解压最佳实践:优先使用COPY,除非需要自动解压或从URL下载。
2.4 WORKDIR
设置工作目录。
WORKDIR /app RUN pwd # 输出:/app2.5 ENV
设置环境变量。
# 单个变量 ENV NODE_EN