dockerfile基本框架

FROM 基础镜像名
RUN 安装依赖
COPY/ADD 复制文件
EXPOSE 端口
CMD/ENTRYPOINT 启动命令

1. 基础镜像 (Base Image)

FROM ubuntu:20.04
  • 指定构建新镜像所基于的基础镜像

2. 维护者信息 (可选)

LABEL maintainer="your-email@example.com"

3. 镜像构建指令

# 设置工作目录
WORKDIR /app

# 复制文件到镜像
COPY . /app
ADD src.tar.gz /app/

# 设置环境变量
ENV NODE_ENV=production

RUN apt-get update && apt-get install -y \
    package1 \
    package2

4. 应用运行配置

# 暴露端口
EXPOSE 8080

# 启动命令
CMD ["node", "app.js"]
ENTRYPOINT ["./start.sh"]

5. 优化指令

# 多阶段构建
FROM node:14 AS builder
# ... 构建步骤

FROM node:14-alpine
COPY --from=builder /app/dist /app/

举例

# 注释:以 # 开头,不会执行

# 基础镜像(必须是第一条非注释指令)
FROM python:3.11-slim

# 设置维护者(已废弃,推荐用 LABEL)
# MAINTAINER yourname@example.com

# 设置环境变量
ENV APP_HOME=/app
ENV PYTHONUNBUFFERED=1

# 创建目录
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME

# 复制文件(推荐按层优化,先复制 requirements.txt)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 复制应用代码
COPY . .

# 暴露端口
EXPOSE 5000

# 设置启动命令
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "--workers", "4", "app:app"]