gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:11:45 25 4
gpt4 key购买 nike

我正在尝试在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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com