1

我想为 5 个不同的网站提供服务,每个网站在 dockerhub 上都有自己的 docker 映像,我想用一个 docker-compose.yml 文件为所有网站提供服务。我使用的工具是: - nginx -proxy -letsencrypt-nginx-proxy-companion

我想 1. 使用 docker-compose 和nginx-proxy为所有网站提供服务 - 每个网站都有一个唯一的域名 2. 使用 docker-compose 和letsencrypt-nginx-proxy-companion

我已经成功地使用这个 docker-compose.yml 完成了第 1 步:

version: '2'

services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    ports:
      - "80:80"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro

  changed-site1:
    image: changed-user/changed-site1:v0.1.0
    environment:
      - VIRTUAL_HOST=changed-site1.com
  changed-site2:
    image: changed-user/changed-site2:v0.1.0
    environment:
      - VIRTUAL_HOST=changed-site2.com
  changed-site3:
    image: changed-user/changed-site3:v0.1.0
    environment:
      - VIRTUAL_HOST=changed-site3.com
  changed-site4:
    image: changed-user/changed-site4:v0.1.0
    environment:
      - VIRTUAL_HOST=api.changed-site4.com
  changed-site5:
    image: changed-user/changed-site5:v0.1.0
    environment:
      - VIRTUAL_HOST=changed-site5.com

当我运行“docker-compose up”时,一切正常,但没有 SSL。

我现在正在尝试完成第 2 步,我的每个网站都给我一个 502 错误。SSL 对它们都没有工作。这是我的 docker-compose.yml 文件的样子:

version: '2'

services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    container_name: nginx-proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - conf:/etc/nginx/conf.d
      - vhost:/etc/nginx/vhost.d
      - html:/usr/share/nginx/html
      - dhparam:/etc/nginx/dhparam
      - certs:/etc/nginx/certs:ro
      - /var/run/docker.sock:/tmp/docker.sock:ro
    network_mode: bridge

  letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: nginx-proxy-le
    volumes_from:
      - nginx-proxy

    volumes:
      - certs:/etc/nginx/certs:rw
      - /var/run/docker.sock:/var/run/docker.sock:ro
    network_mode: bridge

    changed-site1:
      image: changed-user/changed-site1:v0.1.0
      environment:
        - VIRTUAL_HOST=changed-site1.com
    changed-site2:
      image: changed-user/changed-site2:v0.1.0
      environment:
        - VIRTUAL_HOST=changed-site2.com
    changed-site3:
      image: changed-user/changed-site3:v0.1.0
      environment:
        - VIRTUAL_HOST=changed-site3.com
    changed-site4:
      image: changed-user/changed-site4:v0.1.0
      environment:
        - VIRTUAL_HOST=api.changed-site4.com
    changed-site5:
      image: changed-user/changed-site5:v0.1.0
      environment:
        - VIRTUAL_HOST=changed-site5.com

知道我在第二个 docker-compose.yml 文件中做错了什么(第一个正在工作)。

4

1 回答 1

1

我认为首先你的 changed-site*: 缩进很​​远。它们应该与letsencrypt:容器具有相同的缩进。

其次,如果要使用 nginx 代理伴侣,则必须为每个容器还提供 LETSENCRYPT_HOST 作为环境变量,这也在他的 github 上进行了说明(https://github.com/JrCs/docker-letsencrypt-nginx-proxy ——同伴

希望这可以帮助。

问候!

于 2019-05-10T15:48:57.880 回答