使用Docker

时间:2017-04-12 11:25:25

标签: nginx docker docker-compose lets-encrypt

我有一个带有Docker容器的网站。 所以我使用nginx反向代理docker和let加密 我按照tutorial

进行操作

但我的网站没有使用https。

我的docker撰写文件:

services:
  nginx:
    image: pixelfordinner/nginx
    container_name: pixelcloud-nginx_proxy-nginx
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "./volumes/conf.d:/etc/nginx/conf.d:ro"
      - "./volumes/vhost.d:/etc/nginx/vhost.d:ro"
      - "./volumes/certs:/etc/nginx/certs:ro"
      - "/usr/share/nginx/html"
  nginx-proxy:
    image: jwilder/docker-gen
    container_name: nginx-proxy
    depends_on:
      - nginx
    volumes_from:
      - nginx
    volumes:
      - "/var/run/docker.sock:/tmp/docker.sock:ro"
      - "./data/templates:/etc/docker-gen/templates:ro"
      - "./volumes/conf.d:/etc/nginx/conf.d:rw"
    entrypoint: /usr/local/bin/docker-gen -notify-sighup pixelcloud-nginx_proxy-nginx -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
  letsencrypt-nginx-proxy:
    restart: always
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: ssl
    depends_on:
      - nginx
      - nginx-proxy
    volumes_from:
      - nginx
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "./volumes/vhost.d:/etc/nginx/vhost.d:rw"
      - "./volumes/certs:/etc/nginx/certs:rw"
    environment:
      - "NGINX_DOCKER_GEN_CONTAINER=pixelcloud-nginx_proxy-docker_gen"
   wordpress:
     image: wordpress
     environment:
      - VIRTUAL_HOST=foo.example.com 
      - LETSENCRYPT_HOST=foo.example.com
      - LETSENCRYPT_EMAIL= mail@example.com

我从github下载nginx.tmpl文件,并将其复制到/data/templates/nginx.tmpl

我不理解它不起作用

感谢您的帮助!

更新:我设法在wordpress上设置https而不是http。 但是我有一个带有docker compose的Gitlab实例。在登录页面上,https正在运行,但是当我登录并进入项目主页时,有https但连接不安全。 我想这样:https://gitlab.exemple.com

1 个答案:

答案 0 :(得分:0)

您似乎错过了jwilder/docker-gen所需的jrcs/letsencrypt-nginx-proxy-companion容器。

请参阅文档:https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion#separate-containers-recommended-method

参见示例:https://github.com/fatk/docker-letsencrypt-nginx-proxy-companion-examples/blob/master/docker-compose/v2/simple-site/docker-compose.yml

这意味着您必须添加nginx.tmpl文件并将其安装到jwilder/docker-gen容器中。 您还需要与/etc/nginx/vhost.d容器共享nginx-proxy卷。

<强>更新 运行container_name图片的服务的docker-gen应为pixelcloud-nginx_proxy-docker_gen,因为它需要与NGINX_DOCKER_GEN_CONTAINER环境变量匹配。所以你应该:

  nginx-proxy:
    image: jwilder/docker-gen
    container_name: pixelcloud-nginx_proxy-docker_gen