# Dockerfile文件
3 min read
Table of Contents
Dockerfile 是 Docker 构建自己的镜像使用的配置文件。
指令表格
Dockerfile 常用的指令
| 指令 | 说明 |
|---|---|
| FROM | 设置基础镜像 |
| RUN | 指令的命令 |
| CMD | 提供默认的命令 |
| LABEL | 添加元数据 |
| EXPOSE | 指定容器运行时监听的网络端口 |
| ENV | 设置环境变量 |
| ADD | 复制文件,目录或远程 URL 到镜像中 |
| COPY | 复制文件,目录到镜像中 |
| VOLUME | 创建挂载点或声明卷 |
| USER | 设置用户名或分组 |
| WORKDIR | 设置工作目录 |
| ARG | 设置构建时的变量 |
| ONBUILD | 当镜像被当作另一个构建过程中的基础时触发 |
| STOPSIGNAL | 设置容器退出时的系统调用信号 |
| HEALTHCHECK | 定义周期性检查容器健康状态的命令 |
| SHELL | 覆盖 Docker 中默认的 shell |
前端示例
配置 Dockerfile
首先在项目根目录创建 Dockerfile 文件,注意文件名大小写。
# Nodejs 构建项目FROM node:16 AS build_image# ENV NODE_ENV=productionWORKDIR /appCOPY package.json ./RUN npm --registry=https://registry.npmmirror.com installCOPY . .RUN npm run build
# nginx 配置FROM nginx:latestWORKDIR /appCOPY ./nginx.conf /etc/nginx/conf.dCOPY --from=build_image /app/dist /usr/share/nginx/html/
EXPOSE 8080注意:
- 设置 NODE_ENV=production 会导致 dev 依赖无法安装。
- 设置 WORKDIR 才可以读取生成的 dist 目录。
配置 nginx
在根目录创建 nginx.conf
server { listen 9528; server_name _;
location / { root /usr/share/nginx/html; index index.html; }}部署
运行命令生成镜像: docker build -t web:v0.1 .,生成之后运行 docker images 可以看到对应的镜像。
启动容器 docker run -d -p 8080:8080 web:v0.1,启动成功之后运行 docker ps 可以看到运行的容器。
.dockerignore
使用 .dockerignore 可以指定文件或路径不会拷贝进镜像,如 node_modules。