Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

Dockerのnginx-proxyでSSL化対応

何番煎じかわかりませんが。あっさり出来たのでメモ。

nginx-proxy 側の docker-compose.yaml

version: '3'

services:
  rg-proxy:
    image: jwilder/nginx-proxy:latest
    container_name: rg-proxy
    privileged: true
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./certs:/etc/nginx/certs:ro
      - ./vhost:/etc/nginx/vhost.d
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./html:/usr/share/nginx/html
    restart: always
    environment:
      TZ: Asia/Tokyo
  letsencrypt-nginx:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: letsencrypt-nginx
    privileged: true
    volumes:
      - ./certs:/etc/nginx/certs:rw
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./vhost:/etc/nginx/vhost.d
      - ./html:/usr/share/nginx/html
    environment:
      NGINX_PROXY_CONTAINER: rg-proxy
    restart: always

networks:
  default:
    external:
      name: sample_network

ポイントは、Let's Encrypt側の環境変数「NGINX_PROXY_CONTAINER: rg-proxy」です。volumes_from の例が多かったですが、Ver3から非推奨になりました。ログを見たらこの環境変数を設定してコンテナ名称を入れないとダメというエラーが出たので、設定したら動きました。

アプリ側のコンテナ

下記3つの環境変数をセットすれば動くようです。

  • VIRTUAL_HOST
  • LETSENCRYPT_HOST
  • LETSENCRYPT_EMAIL