1

我在 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
4

0 回答 0