使用jwilder / nginx-proxy不同端口和相同域的多个服务
在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 – localhost:8080
- MySQL: – localhost: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
更新:
这只是一个例子。 在将来,我将代理作为外部networking,并将服务连接到它。 而且我不会在同一个主机(VPS)上运行两个docker-compose
“文件”。 目的:生产和testing版本在同一台主机上,使用相同的端口但不同的域。 例如:
- example.com – 网站
- example.com:81 – PhpMyAdmin
- test.example.com – 网站进行testing
- test.example.com:81 – PhpMyAdmin进行testing