Docker + Nginx 部署配置指南

 更新时间:2026年04月30日 09:01:06   作者:疯狂成瘾者(Ethan)  
这篇文章给大家介绍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"]

它通常负责:

  1. 指定基础环境,比如 nodepythonnginx
  2. 拷贝项目代码到镜像中。
  3. 安装依赖。
  4. 执行构建命令。
  5. 指定容器启动后运行什么命令。

在你的这组文件里,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/;
    }
}

常见作用包括:

  1. 配置监听端口,例如 80443
  2. 配置静态资源目录,例如前端打包后的 dist
  3. 配置反向代理,例如把 /api 请求转发给后端服务。
  4. 配置 HTTPS、缓存、压缩、日志。
  5. 配置多站点、多域名、多路径转发。

Nginx 本身可以作为 HTTP Web 服务器、反向代理、缓存、负载均衡器、TCP/UDP 代理等。(Nginx)

在 Docker 项目里,nginx.conf 经常配合 Dockerfiledocker-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 应用的 servicesnetworksvolumes 等内容。(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"

它通常负责:

  1. 定义有哪些容器服务,比如 nginxfrontendbackendmysqlredis
  2. 指定服务使用哪个镜像,或者从哪个 Dockerfile 构建。
  3. 配置端口映射,比如 80:803000:3000
  4. 配置数据卷挂载,比如挂载配置文件、数据库数据目录。
  5. 配置容器之间的依赖关系。
  6. 配置网络,使服务之间可以通过服务名互相访问。

官方 Compose 规范中也提到,Compose 文件是一个 YAML 文件,核心结构通常包括 services,也可以包括 networksvolumesconfigssecrets 等。(GitHub)

在你的这组文件里,docker-compose.yml 很可能是启动整个项目的入口,例如:

docker compose up -d

4..dockerignore

.dockerignore 用来告诉 Docker:构建镜像时,哪些文件或目录不要发送到构建上下文里。Docker 官方文档说明,构建上下文中可以使用 .dockerignore 文件排除文件和目录。(Docker Documentation)

典型内容:

node_modules
.git
.env
dist
.DS_Store
*.log

它的作用主要是:

  1. 减小 Docker 构建上下文。
  2. 加快镜像构建速度。
  3. 避免把无关文件复制进镜像。
  4. 避免泄露敏感文件,比如 .env、私钥、日志。
  5. 避免把本地依赖目录,如 node_modules,带进镜像。

它和 .gitignore 很像,但作用对象不同:

文件作用对象
.gitignoreGit 提交时忽略哪些文件
.dockerignoreDocker 构建镜像时忽略哪些文件

这四个文件之间的关系

可以按部署流程这样理解:

.dockerignore
   ↓
过滤不需要参与构建的文件
Dockerfile
   ↓
根据项目代码构建 Docker 镜像
nginx.conf
   ↓
配置 Nginx 如何访问静态文件、转发 API、监听端口
docker-compose.yml
   ↓
把 Nginx、应用、数据库等服务组合起来,一键启动

一个常见前端项目部署流程可能是:

  1. .dockerignore 排除 node_modules.git、日志等文件。
  2. Dockerfile 构建前端项目,生成 dist
  3. nginx.conf 配置 Nginx,把 dist 作为静态网站目录,并把 /api 转发给后端。
  4. docker-compose.yml 启动 Nginx 容器、后端容器、数据库容器。

简单说:

Dockerfile:做镜像
docker-compose.yml:跑容器
nginx.conf:管请求
.dockerignore:减负和防泄露

到此这篇关于Docker + Nginx 部署配置指南的文章就介绍到这了,更多相关Docker Nginx 部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker安装目录迁移的两种常用方法

    docker安装目录迁移的两种常用方法

    docker目录的迁移其实非常简单,今天小编给大家分享两种方法帮助大家解决docker安装目录迁移问题,感兴趣的朋友跟随小编一起看看吧
    2023-05-05
  • Docker安装Redis容器的实现步骤

    Docker安装Redis容器的实现步骤

    本文主要介绍了Docker安装Redis容器的实现步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 绑定Dokcer容器到主机指定网卡的方法

    绑定Dokcer容器到主机指定网卡的方法

    这篇文章主要介绍了绑定 Dokcer 容器到主机指定网卡的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Docker部署Django的详细指南

    Docker部署Django的详细指南

    部署Django应用到Docker中的详细步骤是一个较为复杂的过程,涉及到许多技术和工具的结合使用,本文将详细介绍如何从零开始使用Docker部署Django应用,感兴趣的小伙伴跟着小编一起来看看吧
    2024-12-12
  • docker启动elasticsearch时内存不足问题及解决方法

    docker启动elasticsearch时内存不足问题及解决方法

    这篇文章主要介绍了docker启动elasticsearch时内存不足问题,本文给大家分享安装过程及解决方法,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • docker镜像的导入和导出的实现

    docker镜像的导入和导出的实现

    这篇文章主要介绍了docker镜像的导入和导出的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 彻底搞懂Docker镜像分层的实现

    彻底搞懂Docker镜像分层的实现

    本文我们会深入的学习Docker的镜像分层的原理和实现,通过实例和与git的类比,帮助我们加深对镜像的理解,对Docker镜像分层相关知识感兴趣的朋友一起看看吧
    2022-02-02
  • Docker搭建MySQ主从复制原理

    Docker搭建MySQ主从复制原理

    这篇文章主要介绍了Docker搭建MySQ主从复制原理,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • CentOS 8.4安装Docker的详细教程

    CentOS 8.4安装Docker的详细教程

    这篇文章主要介绍了CentOS 8.4安装Docker的详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • Docker buildx构建多平台镜像并推送到私有仓库的方法

    Docker buildx构建多平台镜像并推送到私有仓库的方法

    这篇文章主要介绍了Docker buildx构建多平台镜像并推送到私有仓库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01

最新评论