📜  docker compose 容器之间的 nginx 连接 (1)

📅  最后修改于: 2023-12-03 14:40:49.134000             🧑  作者: Mango

Docker Compose 容器之间的 Nginx 连接

在使用 Docker Compose 管理多个容器时,我们常常需要使用一些工具将多个服务连接在一起,以处理不同服务之间的通信,例如使用 Nginx 作为反向代理,可以将不同服务映射到不同的 URL,实现更方便的服务访问。下面介绍如何在 Docker Compose 中使用 Nginx 进行容器之间的连接。

配置 Docker Compose 文件

我们首先需要在 Docker Compose 文件中添加 Nginx 服务。在下面的例子中,我们定义了两个服务:web 和 api,使用 Nginx 将它们连接在一起,将 web 映射到 /,将 api 映射到 /api。其中 web 和 api 的具体配置略去。

version: '3'
services:
  web:
    image: <web_image>
    ports:
      - "8080:8080"
  api:
    image: <api_image>
    ports:
      - "8081:8081"

  # Nginx 服务
  nginx:
    image: nginx:latest
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - web
      - api

配置 Nginx

接下来,我们需要在 Nginx 中配置反向代理。在上面的 Docker Compose 文件中,我们定义了一个名为 nginx 的服务,并将其映射到了宿主机的 80 和 443 端口,我们需要在 Docker Compose 文件所在的目录中创建一个名为 "nginx.conf" 的文件,并且将下面的反向代理配置拷贝到指定位置。

worker_processes 1;

events {
    worker_connections 1024;
}

http {
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    upstream web {
        server web:8080;
    }

    upstream api {
        server api:8081;
    }

    server {
        listen 80;
        server_name localhost;

        location / {
            proxy_pass http://web;
        }

        location /api {
            proxy_pass http://api;
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root /usr/share/nginx/html;
        }
    }
}

在上面的配置中,我们首先定义了两个 upstream 服务:web 和 api,它们分别对应 Docker Compose 文件中的 web 和 api 服务。接着,在 server 部分将 web 映射到 /,将 api 映射到 /api,通过 proxy_pass 指定转发到 upstream 服务。

启动容器

最后,我们使用以下命令启动 Docker Compose 容器:

docker-compose up -d
总结

本文介绍了在 Docker Compose 中使用 Nginx 进行容器之间的连接的步骤,包括 Docker Compose 文件的配置,Nginx 的反向代理配置和容器的启动。Nginx 反向代理是非常常用的容器连接工具,对于多个服务之间的通信有很大的帮助。