使用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