当前位置: 首页 > backend >正文

Dockerfile指令

1.基础镜像相关
FROM
说明:指定基础镜像,所有 Dockerfile 必须以这个指令开始。
示例:

FROM ubuntu:20.04
FROM python:3.9-slim

2.维护者信息
LABEL
说明:为镜像添加元数据,如作者、版本等。
示例:

LABEL maintainer="yourname@example.com"
LABEL version="1.0"

3.环境配置
ENV
说明:设置环境变量,可以在后续指令中使用。
示例:

ENV APP_HOME /app
ENV DEBUG_MODE true

4.文件操作
COPY
说明:将主机文件复制到镜像中。
示例:

COPY . /app
COPY requirements.txt /app/

ADD
说明:类似 COPY,但支持自动解压远程文件。
示例:

ADD https://example.com/file.tar.gz /app/

RUN
说明:在镜像中执行命令。
示例:

RUN apt-get update && apt-get install -y python3-pip
RUN pip install -r requirements.txt

5.工作目录
WORKDIR
说明:设置工作目录,后续指令默认在这个目录下执行。
示例:

WORKDIR /app

6.镜像启动配置
CMD
说明:指定容器启动时默认执行的命令。
示例:

CMD ["python", "app.py"]

ENTRYPOINT
说明:覆盖容器的入口点,与 CMD 配合使用。
示例:

ENTRYPOINT ["python"]
CMD ["app.py"]

7.端口和卷
EXPOSE
说明:声明容器运行时监听的端口。
示例:

EXPOSE 8080

VOLUME
说明:创建挂载点,用于数据持久化。
示例:

VOLUME /data

8.构建信息
ARG
说明:定义构建时的变量,仅在构建过程中有效。
示例:

ARG BUILD_VERSION=1.0

ONBUILD
说明:设置镜像在被其他镜像作为基础镜像时自动执行的指令。
示例:

ONBUILD COPY . /app

9.用户和群组
USER
说明:指定运行容器时的用户。
示例:

USER myuser

GROUPADD
说明:创建用户组。
示例:

GROUPADD mygroup

10.清理操作
STOPSIGNAL
说明:指定停止容器的信号。
示例:

STOPSIGNAL SIGTERM

HEALTHCHECK
说明:设置容器的健康检查命令。
示例:

HEALTHCHECK --interval=30s --timeout=3s CMD curl -f http://localhost/ || exit 1

11.注释

说明:用于添加注释。
示例:

# 这是一个注释

12.SHELL
说明:指定默认的 shell 类型。
示例:

SHELL ["/bin/bash", "-c"]

常用示例
以下是一个完整的 Dockerfile 示例:

# 使用官方 Python 镜像作为基础镜像
FROM python:3.9-slim# 设置维护者信息
LABEL maintainer="yourname@example.com"# 设置环境变量
ENV APP_HOME /app# 设置工作目录
WORKDIR $APP_HOME# 复制当前目录下的所有文件到镜像的工作目录
COPY . .# 安装依赖
RUN pip install -r requirements.txt# 暴露端口
EXPOSE 8080# 设置容器启动时默认执行的命令
CMD ["python", "app.py"]
http://www.xdnf.cn/news/1789.html

相关文章:

  • JavaScript 实现继承及 Class 本质详解
  • 【Python Web开发】02-Socket网络编程02
  • Java 高频面试题解析
  • Langchain提取结构化数据
  • 第九节:性能优化高频题-首屏加载优化策略
  • JS Array 方法 | 区分 slice 和 splice
  • `rfind()` 从字符串的右侧开始查找指定子字符串首次出现的位置
  • SiamFC算法深度解析
  • 深入浅出:Pinctrl与GPIO子系统详解
  • SpringCloud微服务架构设计与实践 - 面试实战
  • C语言别踩白块附源码
  • Trae+DeepSeek学习Python开发MVC框架程序笔记(四):使用sqlite存储查询并验证用户名和密码
  • 现代化个人博客系统 ModStartBlog v10.3.0 博客批量操作,博客评论智能审核,安全升级
  • 某大型电解铝厂电解系统谐波治理装置改造沃伦森电气
  • Linux之七大难命令(The Seven Difficult Commands of Linux)
  • U盘能识别但无法写入数据的原因
  • CSS学习笔记8——表格
  • STM32F103C8T6 GPIO 通讯原理与物理层解析
  • Git 详细使用说明文档(适合小白)
  • 数据结构-冒泡排序(Python)
  • 【硬核干货】JetBrains AI Assistant 干货笔记
  • 数据分析工具 - AxureMost
  • php 框架Workerman定时任务详解《一》
  • MCP开发实战(一)基于MCP协议的大模型网关——多个大模型API统一封装为标准化工具
  • Axure大屏可视化模板:多领域数据决策的新引擎
  • TXPOLARITY/RXPOLARITY设置
  • java延迟map, 自定义延迟map, 过期清理map,map能力扩展。如何设置map数据过期,改造map适配数据过期
  • day6-小白学习JAVA---方法_面向对象
  • 了解低功耗蓝牙中的安全密钥
  • 缓存穿透、雪崩、击穿深度解析与解决方案