我在 docker-compose 中有一些服务:
version: "3"
services:
site:
volumes:
- .:/app
build:
dockerfile: Dockerfile.dev
context: docker
ports:
- "80:80"
webpack:
image: node:6.12.0
ports:
- "8080:8080"
volumes:
- .:/app
working_dir: /app
command: bash -c "yarn install; yarn run gulp server"
db:
image: mysql:5.7.20
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: ${DB_NAME}
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
我可以连接到暴露的服务端口:
- 站点——本地主机:80
- Webpack——本地主机:8080
- MySQL:--本地主机:3306
如何使用 nginx-proxy 公开同一域上不同服务器的多个端口(?):
- 站点——example.dev:80
- Webpack——example.dev:8080
- MySQL:--example.dev:3306
这有效:
services:
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
site:
volumes:
- .:/app
build:
dockerfile: Dockerfile.dev
context: docker
expose:
- 80
environment:
VIRTUAL_HOST: ${VIRTUAL_HOST}
但这不是:
services:
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
- "8080:8080"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
site:
volumes:
- .:/app
build:
dockerfile: Dockerfile.dev
context: docker
expose:
- 80
environment:
VIRTUAL_HOST: ${VIRTUAL_HOST}
webpack:
image: node:6.12.0
expose:
- 8080
environment:
VIRTUAL_HOST: ${VIRTUAL_HOST}
VIRTUAL_PORT: 8080
volumes:
- .:/app
working_dir: /app
command: bash -c "yarn install; yarn run gulp server"
我做错了什么?我怎么解决这个问题?
//Sorry for my worst English. Hope you'll understand me
更新:
这只是一个例子。将来我会将代理作为外部网络并将服务连接到它。而且我不会docker-compose
在同一主机(VPS)上运行两个“文件”。目的:同一主机上的生产和测试版本,使用相同的端口但不同的域。例如:
- example.com——网站
- example.com:81 -- PhpMyAdmin
- test.example.com -- 测试网站
- test.example.com:81 -- 用于测试的 PhpMyAdmin