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

Dockerfile入门指南

Dockerfile 概述

Dockerfile 是一个文本文件,包含一组用于构建 Docker 镜像的指令。通过逐行执行这些指令,Docker 可以自动化地创建镜像,用于运行容器化应用。

核心指令

FROM
指定基础镜像,所有后续操作基于此镜像。例如:

FROM ubuntu:22.04

RUN
在镜像构建过程中执行命令,常用于安装软件或配置环境。例如:

RUN apt-get update && apt-get install -y python3

COPY 与 ADD
将文件从主机复制到镜像中。COPY 仅支持本地文件,ADD 还支持远程 URL 和解压功能。例如:

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

WORKDIR
设置后续指令的工作目录。若目录不存在,Docker 会自动创建。例如:

WORKDIR /app

ENV
设置环境变量,可被后续指令或容器运行时使用。例如:

ENV PYTHONPATH=/usr/lib/python3

EXPOSE
声明容器运行时监听的端口,但实际映射需通过 docker run -p 参数实现。例如:

EXPOSE 8080

CMD 与 ENTRYPOINT
定义容器启动时的默认命令。CMD 可被 docker run 覆盖,ENTRYPOINT 则更固定。例如:

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

多阶段构建

通过多阶段构建可减小最终镜像体积,仅保留必要的文件。例如:

FROM golang:1.18 AS builder
WORKDIR /app
COPY . .
RUN go build -o main .FROM alpine:latest
COPY --from=builder /app/main .
CMD ["./main"]

最佳实践

  • 使用 .dockerignore 文件排除无需复制的文件(如 node_modules)。
  • 合并多个 RUN 指令以减少镜像层数。
  • 优先使用官方镜像作为基础镜像。
  • 固定镜像版本(如 ubuntu:22.04 而非 ubuntu:latest)以保证一致性。

示例 Dockerfile

以下是一个完整的 Python 应用示例:

FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 5000
ENV FLASK_APP=app.py
CMD ["flask", "run", "--host=0.0.0.0"]

通过以上指令和示例,可以高效定义容器化应用的构建流程。

http://www.dtcms.com/a/395235.html

相关文章:

  • iOS 原生开发全流程解析,iOS 应用开发步骤、Xcode 开发环境配置、ipa 文件打包上传与 App Store 上架实战经验
  • 数据分析报告的写作流程
  • 当你的断点在说谎:深入解析RTOS中的“幽灵”Bug
  • [BUG]MarkupSafe==3.0.2
  • 机器学习笔试选择题:题组1
  • 79-数据可视化-地图可视化
  • python全栈-数据可视化
  • 【国产桌面操作系统】安装mysql客户端及C/C++开发
  • IntelliJ:找不到相关的 gradle 配置,请重新导入 Gradle 项目,然后重试。
  • 云计算微服务架构与容器化技术:服务网格与边缘计算融合实践
  • 飞牛NAS上搭建OpenWrt旁路由教程(适用于x86的Docker部署)
  • python14——函数
  • 14.Linux 硬盘分区管理及RAID存储技术
  • ★ Linux ★ 信号
  • macOS在IDEA里滚动行为混乱问题
  • ✨Vue 静态路由详解:构建应用的导航骨架(4)
  • 08-2Dcss动画
  • 使用IOT-Tree消息流Modbus Slave节点,实现Modbus设备的模拟
  • 创作者模式—单例设计模式
  • PostgreSQL 备份
  • SQL-多表查询
  • Hive SQL 中的时间戳转换详解
  • Linux笔记---select、poll、epoll总结对比
  • MySQL查询详细介绍
  • 面试题二:业务篇
  • Rust进阶-part8-迭代器
  • halcon3d gen_image_to_world_plan3_map与project_3d_point
  • Ellisys工具
  • Qwen3-7B-Instruct Windows LMStudio 部署
  • 【代码】关于C#支持文件和文本框的简单日志实现