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

dockerfile

导出所有包到 requirements.txt

# 导出当前环境的所有包(包含版本号)
conda list --export > requirements.txt# 或者使用pip格式导出(推荐用于跨平台)
pip list --format=freeze > requirements.txt

 

Dockerfile 指令完整详解

1. FROM - 指定基础镜像

FROM [--platform=<platform>] <image>[:<tag>] [AS <name>]

参数说明:

  • <image>:基础镜像名称(必需)

  • <tag>:镜像标签,默认为 latest

  • AS <name>:为构建阶段命名(用于多阶段构建)

  • --platform:指定平台,如 linux/amd64

FROM ubuntu:20.04
FROM python:3.9-slim AS builder
FROM --platform=linux/amd64 nginx:alpine

2. RUN - 执行命令

作用:在镜像构建过程中执行命令

# Shell 格式(默认使用 /bin/sh -c)
RUN <command># Exec 格式(推荐)
RUN ["executable", "param1", "param2"]
RUN apt-get update && apt-get install -y curl
RUN ["/bin/bash", "-c", "echo 'Hello World'"]

3. COPY - 复制文件

作用:从构建上下文复制文件到镜像中

COPY [--chown=<user>:<group>] <源路径>... <目标路径>
COPY [--chown=<user>:<group>] ["<源路径>",... "<目标路径>"]

参数说明:

  • --chown:设置文件所有者

  • <源路径>:构建上下文中的文件/目录

  • <目标路径>:容器内的绝对路径

COPY package.json ./
COPY --chown=node:node . /app
COPY ["src/", "conf/", "/app/"]

4. ADD - 高级复制

作用:类似 COPY,但功能更多(支持 URL 和解压)

特殊功能:

  • 自动解压 tar、gzip 等压缩文件

  • 支持从 URL 下载文件

ADD https://example.com/file.tar.gz /tmp/
ADD app.tar.gz /app/  # 自动解压

5. CMD - 容器启动命令

作用:指定容器启动时的默认执行命令

# Exec 格式(推荐)
CMD ["executable", "param1", "param2"]# Shell 格式
CMD command param1 param2# 作为 ENTRYPOINT 的参数
CMD ["param1", "param2"]

重要特性:

  • 一个 Dockerfile 只能有一个 CMD

  • 容易被 docker run 的参数覆盖

CMD ["nginx", "-g", "daemon off;"]
CMD python app.py

6. ENTRYPOINT - 入口点

作用:配置容器启动时的可执行文件

# Exec 格式(推荐)
ENTRYPOINT ["executable", "param1", "param2"]# Shell 格式
ENTRYPOINT command param1 param2

与 CMD 的配合:

  • ENTRYPOINT 定义主要命令

  • CMD 提供默认参数

  • docker run 参数会覆盖 CMD

ENTRYPOINT ["curl"]
CMD ["-s", "http://localhost"]docker run my-image                          # 执行 curl -s http://localhost
docker run my-image -I http://google.com     # 执行 curl -I http://google.com

7. WORKDIR - 工作目录

作用:设置后续指令的工作目录

WORKDIR /path/to/workdir

特性:

  • 如果目录不存在会自动创建

  • 相对路径基于前一个 WORKDIR

  • 影响 RUNCMDCOPYADD 等指令

WORKDIR /app
WORKDIR src      # 现在路径是 /app/src
WORKDIR ../build # 现在路径是 /app/build

8. ENV - 环境变量

作用:设置环境变量

ENV NODE_ENV=production
ENV APP_HOME=/app USER=appuser
ENV PATH=/app/bin:$PATH

9. ARG - 构建参数

作用:定义构建时的变量

特性:

  • 只在构建过程中有效

  • 运行时不可用

  • 可以有默认值

ARG APP_VERSION=latest
ARG BUILD_NUMBERFROM ubuntu:20.04
ARG APP_VERSION
LABEL version=${APP_VERSION}
docker build --build-arg APP_VERSION=2.0.0 --build-arg BUILD_NUMBER=123 .

10. EXPOSE - 暴露端口

作用:声明容器运行时监听的端口

EXPOSE 80/tcp
EXPOSE 443
EXPOSE 3000 5000 8080

注意:这仅是声明,实际端口映射需要在运行时指定

11. VOLUME - 数据卷

作用:创建挂载点用于数据持久化

VOLUME ["/var/log", "/data"]
VOLUME /app/uploads

12. USER - 设置用户

作用:指定运行容器时的用户

RUN groupadd -r appuser && useradd -r -g appuser appuser
USER appuser
USER 1000:1000

13. LABEL - 添加元数据

作用:为镜像添加元数据

LABEL version="1.0"
LABEL maintainer="dev@example.com"
LABEL description="My Application" \author="Dev Team"

14. HEALTHCHECK - 健康检查

作用:定义容器健康检查方式

 

 

http://www.hskmm.com/?act=detail&tid=16929

相关文章:

  • PostgreSQL 的索引Ooracle、Mysql索引的类型对比和说明
  • Docker打包CMake项目镜像操作步骤
  • Linux dmesg 内核日志查看工具详解
  • 【智慧】 gym104385
  • __repr__魔术方法
  • 基于萤火虫算法(FA)优化支持向量机(SVM)参数的分类实现
  • OSS cp(下载文件)
  • 有范同城旅游广告小程序系统:赋能旅游行业数字化运营新生态
  • Active Directory安全指南:默认域管理员账户的安全管理
  • 微云二手车运营版系统:多端覆盖的二手车平台解决方案
  • Linux常见命令1
  • 下载并安装ossutil
  • Unigine整合Myra UI Library全纪录(1)
  • new 为数组开辟内容空间的时候,数组大小这个额外的信息是如何存储的? int * p = new int[5]; 指针p 指向的的int 数据地址还是数组大小的地址?
  • 欧拉函数学习笔记
  • PDF论文文字公式提取,翻译与对照代码(自用)
  • Lambda表达式 - AlgosEng
  • ABAP 调用HTTP上传附件中文乱码
  • PDF入参以及模板对应签章图踩坑点 JAR版本为 iText5
  • 从 0 到 1 精通 SkyWalking:分布式系统的 “透视镜“ 技巧全解析
  • 系统调用brk 和 mmap 有什么不同?
  • 雷达系统杂波设计与仿真
  • 国标GB28181视频平台EasyCVR一体化加油站安防视频监控方案与实践
  • JavaScript 沙箱
  • PDF入参以及模板对应签章图踩坑点
  • 高性能PCIe 3.0软核,x1~x16,支持EP/RC,AXI4接口,内置DMA控制器,适用ASIC和FPGA
  • 使用git clone 批量下载huggingface模型文件
  • Python 换进安装GDAL
  • sync(同步本地文件到OSS)
  • MyBatisPlus 会默认设置 mybatis 的 scanPackages 为当前 BeanFactory 的 auto-configuration 的 base packages