初识Dockerfile
时间: 2025-04-24 07:12:30 浏览: 18
### Dockerfile入门教程
#### 定义基础镜像
`FROM` 指令用于指定构建新镜像所基于的基础镜像。这通常是官方仓库中的某个标准镜像,或者是之前创建的自定义镜像。
```dockerfile
FROM ubuntu:latest
```
此行表示使用最新版本的Ubuntu作为基础镜像[^4]。
#### 设置维护者信息
为了记录谁负责该镜像及其后续更新,可以通过 `MAINTAINER` 来指明作者姓名或者联系邮箱地址:
```dockerfile
MAINTAINER John Doe [email protected]
```
不过需要注意的是,在较新的Docker版本中推荐使用 `LABEL` 替代 `MAINTAINER` ,因为后者已被弃用[^3]。
#### 配置环境变量
利用 `ENV` 可以为容器内部设定持久性的环境配置项,这对于应用程序运行时所需的特定条件非常有用:
```dockerfile
ENV APP_HOME /usr/src/app \
NODE_ENV production
```
上述例子设置了两个环境变量:一个是应用的工作路径;另一个指示节点处于生产模式下工作.
#### 执行命令序列化
`RUN` 是用来执行任意合法Shell命令的主要手段之一,它会在当前层之上新增一层并保存更改结果至其中。通常会在此阶段安装依赖包、编译源码等操作:
```dockerfile
RUN apt-get update && apt-get install -y nodejs npm git
```
这条语句先刷新软件列表再依次下载Node.js, NPM以及Git工具集.
#### 添加文件或目录
当需要把本地机器上的静态资源同步给目标容器时,则可借助于 `ADD` 或者更常用的 `COPY` 。两者区别在于前者支持远程URL链接并且能够识别tarball格式自动解压而后者不具备这些特性:
```dockerfile
COPY ./src ${APP_HOME}
```
这段代码片段意味着将项目根目录下的`src`整个拷贝到先前由`WORKDIR`确立的位置上.
#### 设定默认工作区
每当启动一个新的进程实例,默认情况下都会位于根(`/`)之下运作。然而很多时候希望改变这一行为从而简化相对路径表达式的书写难度——这时就轮到了 `WORKDIR` 登场了:
```dockerfile
WORKDIR $APP_HOME
```
如此一来无论何时何地只要涉及到文件系统的访问动作都将以此处为起点展开探索之旅.
#### 构建过程总结
综上所述,一份完整的Dockerfile可能看起来如下所示:
```dockerfile
# 使用官方Python镜像为基础镜像
FROM python:3.8-slim-buster
# 维护者信息(建议采用标签方式)
LABEL maintainer="John Doe <[email protected]>"
# 创建必要的环境变量
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# 更新系统库表单并向其添加所需组件
RUN pip install --upgrade pip
# 将当前项目的全部内容传输过去
COPY . .
# 明确指出接下来的操作均发生在该项目所在位置之内
WORKDIR /code
# 运行pip freeze以确保所有依赖都被正确解析出来
RUN pip install -r requirements.txt
```
这份文档不仅涵盖了如何编写基本结构化的Dockerfile还提供了实际应用场景里的最佳实践指导原则[^2].
阅读全文
相关推荐

















