在多图像,多域docker-compose.yml

时间:2019-02-08 13:19:11

标签: docker-compose lets-encrypt jwilder-nginx-proxy

我想为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文件(第一个正在工作)中做错了。

1 个答案:

答案 0 :(得分:0)

我认为您首先要更改站点*:缩进很远。它们应该与Letencrypt:容器具有相同的缩进。

第二,如果要使用nginx代理伴侣,则还必须为每个容器提供LETSENCRYPT_HOST作为环境变量,这也在他的github(https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion)中进行了解释

希望这会有所帮助。

致谢!