Dockerfile

常用命令

  • FROM: 指定基础镜像。每个 Dockerfile 必须以 FROM 指令开始。

    FROM ubuntu:20.04
    
  • RUN: 执行命令并创建镜像层。常用于安装软件包。

    RUN apt-get update && apt-get install -y python3
    
  • COPY: 将文件或目录从宿主机复制到镜像内。

    COPY ./localfile /path/in/container/
    
  • ADD: 功能类似于 COPY,但可以处理 URL 和解压压缩文件。

    ADD https://example.com/file.tar.gz /path/in/container/
    
  • CMD: 指定容器启动时默认执行的命令。每个 Dockerfile 只能有一个 CMD,如果指定多个,只有最后一个会生效。

    CMD ["python3", "app.py"]
    
  • ENTRYPOINT: 类似于 CMD,但不容易被覆盖。通常与 CMD 结合使用来提供默认参数。

    ENTRYPOINT ["python3"]
    CMD ["app.py"]
    
  • WORKDIR: 设置工作目录。如果目录不存在,会自动创建。

    WORKDIR /app
    
  • ENV: 设置环境变量。

    ENV APP_ENV=production
    
  • EXPOSE: 声明容器监听的端口。这只是一个说明性指令,不会实际打开端口。

    EXPOSE 8080
    
  • VOLUME: 创建挂载点,从而允许持久化存储。

    VOLUME ["/data"]
    
  • USER: 指定运行容器时使用的用户名或 UID。

    USER appuser
    
  • LABEL: 添加元数据到镜像中。

    LABEL maintainer="you@example.com"
    
  • ARG: 定义构建参数,可以在构建时传递。

    ARG VERSION=1.0
    RUN echo "Version: $VERSION"
    
  • ONBUILD: 设置触发器,当其他镜像基于当前镜像构建时执行。

    ONBUILD RUN echo "This runs on build"
    
  • SHELL: 指定默认的 shell,可以覆盖默认的 /bin/sh -c

    SHELL ["powershell", "-Command"]
    

示例

# 使用 node 官方镜像作为基础镜像
FROM node:16-alpine

# 设置环境变量
ENV NODE_ENV=production

# 创建并设置工作目录
WORKDIR /usr/src/app

# 先复制 package.json 和 package-lock.json 文件
COPY package*.json ./

# 安装项目依赖
RUN npm install --production

# 复制项目文件到容器内工作目录
COPY . .

# 如果你的应用程序需要编译,例如使用 TypeScript 或 Babel,
# 你可以在这里运行构建命令
RUN npm run build

# 暴露容器端口,要与你的 app 实际监听的端口一致
EXPOSE 3000

# 运行应用程序
CMD ["npm", "start"]
posted @ 2024-12-28 19:19  Undefined443  阅读(9)  评论(0)    收藏  举报