Docker + Nginx 部署配置指南
下面这 4 个文件通常是一套 Docker + Nginx 部署配置。它们各司其职:Dockerfile 负责“怎么构建镜像”,docker-compose.yml 负责“怎么编排和启动容器”,nginx.conf 负责“Nginx 怎么转发/服务请求”,.dockerignore 负责“构建镜像时哪些文件不要带进去”。
| 文件 | 主要作用 | 可以理解为 |
|---|---|---|
Dockerfile | 定义 Docker 镜像如何构建 | 应用的“镜像制作说明书” |
nginx.conf | 定义 Nginx 的运行配置 | Web 服务器 / 反向代理的“路由规则” |
docker-compose.yml | 定义多个容器如何一起运行 | 本地/服务器部署的“一键启动配置” |
.dockerignore | 排除不需要参与镜像构建的文件 | Docker 版 .gitignore |
1.Dockerfile
Dockerfile 是一个文本文件,里面写的是构建 Docker 镜像的指令。Docker 官方文档说,Docker 会读取 Dockerfile 中的指令来自动构建镜像;它本质上包含了你原本可能在命令行里一步步执行的构建命令。(Docker Documentation)
常见作用包括:
FROM node:20-alpine WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build CMD ["npm", "start"]
它通常负责:
- 指定基础环境,比如
node、python、nginx。 - 拷贝项目代码到镜像中。
- 安装依赖。
- 执行构建命令。
- 指定容器启动后运行什么命令。
在你的这组文件里,Dockerfile 很可能用于构建前端项目、后端项目,或者自定义 Nginx 镜像。
2.nginx.conf
nginx.conf 是 Nginx 的主配置文件。Nginx 官方文档说明,Nginx 及其模块的行为由配置文件中的指令决定;默认配置文件通常叫 nginx.conf,可能位于 /usr/local/nginx/conf、/etc/nginx 或 /usr/local/etc/nginx。(Nginx)
它常用于配置:
server {
listen 80;
location / {
root /usr/share/nginx/html;
index index.html;
}
location /api/ {
proxy_pass http://backend:3000/;
}
}常见作用包括:
- 配置监听端口,例如
80、443。 - 配置静态资源目录,例如前端打包后的
dist。 - 配置反向代理,例如把
/api请求转发给后端服务。 - 配置 HTTPS、缓存、压缩、日志。
- 配置多站点、多域名、多路径转发。
Nginx 本身可以作为 HTTP Web 服务器、反向代理、缓存、负载均衡器、TCP/UDP 代理等。(Nginx)
在 Docker 项目里,nginx.conf 经常配合 Dockerfile 或 docker-compose.yml 使用,比如把本地的 nginx.conf 挂载到容器里的 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/default.conf。
3.docker-compose.yml
docker-compose.yml 是 Docker Compose 的配置文件,用 YAML 格式描述一个应用由哪些服务组成。Docker 官方文档说明,Compose 文件用于配置 Docker 应用的 services、networks、volumes 等内容。(Docker Documentation)
一个典型例子:
services:
nginx:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- app
app:
build: .
expose:
- "3000"它通常负责:
- 定义有哪些容器服务,比如
nginx、frontend、backend、mysql、redis。 - 指定服务使用哪个镜像,或者从哪个
Dockerfile构建。 - 配置端口映射,比如
80:80、3000:3000。 - 配置数据卷挂载,比如挂载配置文件、数据库数据目录。
- 配置容器之间的依赖关系。
- 配置网络,使服务之间可以通过服务名互相访问。
官方 Compose 规范中也提到,Compose 文件是一个 YAML 文件,核心结构通常包括 services,也可以包括 networks、volumes、configs、secrets 等。(GitHub)
在你的这组文件里,docker-compose.yml 很可能是启动整个项目的入口,例如:
docker compose up -d
4..dockerignore
.dockerignore 用来告诉 Docker:构建镜像时,哪些文件或目录不要发送到构建上下文里。Docker 官方文档说明,构建上下文中可以使用 .dockerignore 文件排除文件和目录。(Docker Documentation)
典型内容:
node_modules .git .env dist .DS_Store *.log
它的作用主要是:
- 减小 Docker 构建上下文。
- 加快镜像构建速度。
- 避免把无关文件复制进镜像。
- 避免泄露敏感文件,比如
.env、私钥、日志。 - 避免把本地依赖目录,如
node_modules,带进镜像。
它和 .gitignore 很像,但作用对象不同:
| 文件 | 作用对象 |
|---|---|
.gitignore | Git 提交时忽略哪些文件 |
.dockerignore | Docker 构建镜像时忽略哪些文件 |
这四个文件之间的关系
可以按部署流程这样理解:
.dockerignore ↓ 过滤不需要参与构建的文件 Dockerfile ↓ 根据项目代码构建 Docker 镜像 nginx.conf ↓ 配置 Nginx 如何访问静态文件、转发 API、监听端口 docker-compose.yml ↓ 把 Nginx、应用、数据库等服务组合起来,一键启动
一个常见前端项目部署流程可能是:
.dockerignore排除node_modules、.git、日志等文件。Dockerfile构建前端项目,生成dist。nginx.conf配置 Nginx,把dist作为静态网站目录,并把/api转发给后端。docker-compose.yml启动 Nginx 容器、后端容器、数据库容器。
简单说:
Dockerfile:做镜像 docker-compose.yml:跑容器 nginx.conf:管请求 .dockerignore:减负和防泄露
到此这篇关于Docker + Nginx 部署配置指南的文章就介绍到这了,更多相关Docker Nginx 部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
低版本Docker升级高版本Docker的详细教程及成功避坑
如果我们使用docker来管理容器,那么保持docker引擎的更新将会是十分重要的,下面这篇文章主要给大家介绍了关于低版本Docker升级高版本Docker的详细教程及成功避坑,文中通过图文介绍的非常详细,需要的朋友可以参考下2023-05-05


最新评论