docker - 如何设置nginx-proxy以选择正确的容器而不需要端口号

标签 docker docker-compose google-compute-engine jwilder-nginx-proxy

我正在尝试在Google Compute VM上设置Nginx代理。因此,我希望我的域名(www.example.com)转到正确的容器。但是由于某种原因,只有将端口号放在地址栏中(www.example.com:3001),它才起作用,这完全违背了目的。

谁能让我知道我在做什么错?

nginx代理docker-compose.yml

version: '3'
services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    ports:
      - 80:80
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
    networks:
      - backend
networks:
  backend:
    driver: bridge


应用docker-compose.yml
version: '3'
services:
  api:
    image: api-image:latest
    build:
      context: ./
      dockerfile: Dockerfile
    ports:
      - 3000:8080
    networks:
      - backend
  public:
    image: app-image:latest
    build:
      context: ./frontend
      dockerfile: Dockerfile
    ports:
      - 3001:8081
    networks:
      - backend
    environment:
      - VIRTUAL_HOST=www.example.com
      - VIRTUAL_PORT=3001
networks:
  backend:
    driver: bridge


因此,当我放置www.example.com:3001时,以上内容正确地代表了public容器。

想法??谢谢!

最佳答案

您已在2个文件中定义了此块。

networks:
  backend:
    driver: bridge

似乎是同一网络,但事实并非如此。如果您使用docker network ls,您将看到2个网络,其项目名称为前缀。

更改为:
networks:
  backend:
    external: true

并手动创建网络docker network create backend

关于docker - 如何设置nginx-proxy以选择正确的容器而不需要端口号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54109903/

相关文章:

java - 如何修复tomcat9中的 “unsupported class file major version 60”?

python - 谷歌计算引擎示例

docker-compose 替代文件不会在该目录中获取 .env

python - 如何解析 (1045, "Access denied for user ' User' @'IP or host' (using password : YES)") when build django docker container?

docker - 对docker-compose.yml中的volumes_from和卷用法感到困惑

docker - 错误: for azerothcore-wotlk_ac-database_1 Cannot start service ac-database: driver failed programming external connectivity on endpoint

mongodb - GCP 实例上的负载平衡 Mongodb

nginx - 使用 Kubernetes Ingress 资源公开具有多个 IP 的多个后端

linux - netcat 实用程序的替代方案

Azure 应用服务 - 解析 docker-compose yml 中的环境变量