如何设置 nginx-proxy 以在不需要端口号的情况下选择正确的容器
How to setup nginx-proxy to choose right container without needing the port number
我正在尝试在 Google 计算 VM 上设置 nginx 代理。所以我希望我的域名 (www.example.com) 转到正确的容器。但出于某种原因,只有在地址栏中输入端口号 (www.example.com:3001) 时它才有效,这完全违背了目的。
谁能告诉我我做错了什么??
nginx-proxy 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
我正在尝试在 Google 计算 VM 上设置 nginx 代理。所以我希望我的域名 (www.example.com) 转到正确的容器。但出于某种原因,只有在地址栏中输入端口号 (www.example.com:3001) 时它才有效,这完全违背了目的。
谁能告诉我我做错了什么??
nginx-proxy 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