你好、Docker
首页
Docker命令大全
Dockerfile
DockerCompose
  • Docker部署Vue项目指南
  • Docker部署Nginx指南
  • Docker部署Django项目指南
  • Docker部署fastapi项目指南
笔记
首页
Docker命令大全
Dockerfile
DockerCompose
  • Docker部署Vue项目指南
  • Docker部署Nginx指南
  • Docker部署Django项目指南
  • Docker部署fastapi项目指南
笔记
  • Docker笔记

Dockerfile笔记

FROM x AS x 语法

  • 在Dockerfile中,FROM ... AS ... 语法是多阶段构建(Multi-stage builds)的一个重要特性。
  • FROM *** AS * 是Dockerfile中的一条指令,用于创建一个新的构建阶段。它的作用是将当前的构建环境切换到一个新的构建阶段,并将该阶段命名为*。
  • 在Dockerfile中,每个指令都会创建一个新的构建阶段。FROM指令是创建构建阶段的第一个指令,它指定了构建阶段的基础镜像。
  • 多阶段构建的主要优点是可以将构建过程分为多个阶段,每个阶段可以使用不同的基础镜像,并且可以选择性地将前一个阶段的文件复制到下一个阶段,这样可以显著减小最终镜像的大小,因为不需要的构建依赖和中间文件都可以被丢弃。
FROM python:3.13-bookworm-slim AS base
...
FROM base AS final
...

ARG x=x 语法

  • 在Dockerfile中,ARG *** 是一个构建参数的定义,它定义了一个名为的参数,并将其默认值设置为。
  • 构建参数是在构建镜像时可以被传递给Docker的变量。它们可以在Dockerfile中使用,并且可以在构建过程中被修改。
  • 当执行docker build 命令时,可以使用--build-arg 自定义参数名称=参数值 参数来传入具体的值。
ARG COMMIT_ID
ENV COMMIT_ID=${COMMIT_ID}
docker build --build-arg COMMIT_ID=123456 -t my-image .

RUN adduser xxx 语法

  • RUN adduser 命令是在Docker容器的文件系统中创建一个新用户。它在构建阶段中执行。 例如我们创建了一个名为appuser的系统用户,主要参数说明, 这个用户主要用于运行应用程序,遵循容器安全最佳实践,不需要设置密码因为这个用户仅用于运行应用,不需要交互式登录。
--disabled-password:禁用密码登录,因为容器中的用户通常不需要密码登录
--gecos "":设置用户信息为空
--home "/home/appuser":设置用户主目录
--shell "/sbin/nologin":设置用户的shell为nologin,表示该用户不能登录shell
--uid "${UID}":设置用户ID

RUN adduser \
    --disabled-password \
    --gecos "" \
    --home "/home/appuser" \
    --shell "/sbin/nologin" \
    --uid "${UID}" \
    appuser

最近更新:: 2025/3/26 07:46
Contributors: YAOBIN