Docker 容易得工程化怎么做?Dockerfile + Docker compose 就可以实现,方便、优雅,我们先了解两个配置的基础配置。
Dockerfile 详细介绍
Dockerfile 是 Docker 构建镜像的脚本文件,它包含了一系列指令,用于定义容器的环境、安装依赖、复制文件、配置启动命令等。
📌 Dockerfile 结构
Dockerfile 主要由以下部分组成:
- 基础镜像(
FROM) - 维护者信息(
LABEL,MAINTAINER) - 环境变量(
ENV) - 工作目录(
WORKDIR) - 复制和添加文件(
COPY,ADD) - 安装软件包(
RUN) - 容器启动命令(
CMD,ENTRYPOINT) - 暴露端口(
EXPOSE) - 定义数据卷(
VOLUME) - 容器健康检查(
HEALTHCHECK) - 用户权限(
USER) - 指定构建阶段(
ARG) - 指定容器运行时默认的信号(
STOPSIGNAL)
📝 1️⃣ FROM:指定基础镜像
所有 Dockerfile 必须以 FROM 指令开头,它用于指定基础镜像。
FROM ubuntu:20.04
示例:
FROM ubuntu:20.04→ 以 Ubuntu 20.04 为基础镜像FROM node:18-alpine→ 以轻量级的 Node.js 18 版本镜像为基础
📝 2️⃣ LABEL:设置元数据
LABEL 用于添加作者信息或版本信息。
LABEL maintainer="yourname@example.com"
LABEL version="1.0"
📝 3️⃣ ENV:定义环境变量
ENV 用于定义环境变量,供后续 RUN、CMD 和 ENTRYPOINT 使用。
ENV NODE_ENV=production
ENV APP_HOME=/app
WORKDIR $APP_HOME
在运行容器时,可以覆盖这些环境变量:
docker run -e NODE_ENV=development myimage
📝 4️⃣ WORKDIR:设置工作目录
WORKDIR 设置容器中的默认工作目录,所有后续命令(如 COPY、RUN)都会在该目录下执行。
WORKDIR /usr/src/app
这样,后续 RUN、COPY、CMD 命令的执行位置就是 /usr/src/app。
📝 5️⃣ COPY & ADD:复制文件
COPY:复制文件
COPY 将本地文件复制到容器中。
COPY myapp /usr/src/app/
ADD:复制并解压
ADD 除了复制文件外,还可以自动解压 .tar.gz 文件或从 URL 下载文件。
ADD myapp.tar.gz /usr/src/app/
📌 区别:
COPY仅支持文件复制。ADD支持解压.tar.gz文件和下载远程资源(不推荐,推荐RUN curl)。
📝 6️⃣ RUN:执行命令
RUN 指令用于在构建镜像时执行命令,通常用于安装软件包。
RUN ap