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

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"]

相关文章:

  • 知识图谱火了?
  • 【Java面试笔记:进阶】16.synchronized底层如何实现?什么是锁的升级、降级?
  • 医学图像(DICOM数据)读取及显示(横断面、冠状面、矢状面、3D显示)为什么用ITK+VTK,单独用ITK或者VTK能实一样功能吗?
  • Spring Cloud Alibaba VS Spring Cloud
  • 如何将极狐GitLab 合并请求导出为 CSV?
  • 《Pinia 从入门到精通》Vue 3 官方状态管理 -- 基础入门篇
  • vue3+TS 手动实现表格滚动
  • 取模--特殊情况讨论/数论
  • 机器学习--线性回归模型
  • Unity InputSystem触摸屏问题
  • 使用Tauri 2.3.1+Leptos 0.7.8开发桌面小程序汇总
  • 优雅实现网页弹窗提示功能:JavaScript与CSS完美结合
  • PyQt6基础_QTabWidget
  • 新增优惠券
  • 哈希表的实现
  • 大模型AI的“双刃剑“:数据安全与可靠性挑战与破局之道
  • 高精度并行2D圆弧拟合(C++)
  • ORACLE RAC环境使用ASM机制零宕机时间更换存储的实践
  • 安宝特案例 | AR技术在院外心脏骤停急救中的革命性应用
  • 4.4 记忆机制与上下文管理:短期与长期记忆的设计与应用
  • 中宣部版权管理局:微短剧出海面临版权交易不畅、海外维权较难等难题
  • 经济日报刊文:积极应对稳住外贸基本盘
  • 商务部:美方应彻底取消所有对华单边关税措施
  • 美媒称特朗普考虑大幅下调对华关税、降幅或超一半,外交部回应
  • 张文宏团队公布广谱抗猴痘药物研发进展,将进入临床审批阶段
  • 湖南永州公安全面推行“项目警官制”,为重点项目建设护航