BETA

自分のとこで使っているDocker用SSL設定

投稿日:2018-10-18
最終更新:2018-10-24

概要

定番のletsencrypt-nginx-proxy-companion/でSSL化をしている。
使い方はほぼ公式のとおりで変更点は以下。

  • ログをfluentdに飛ばす設定入れている
  • SSL化をするリバースプロキシになるnginx(ここではフロントと呼びます)の初期設定をいじっている

フロントの設定

build: ./proxyでフロントの初期設定をいじっている。設定内容はproxy/Dockerfileのとおり。

(docker-compose.yml)

version: '2'
services:
  proxy:
    build: ./proxy
    container_name: nginx-proxy
    ports:
      - 80:80
      - 443:443
    logging:
      driver: fluentd
      options:
        fluentd-address: ${LOG_SERVER}:24224
        tag: docker.{{.FullID}}
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./docker-compose.d/certs:/etc/nginx/certs:ro
      - ./docker-compose.d/htpasswd:/etc/nginx/htpasswd
      - /etc/nginx/vhost.d
      - /usr/share/nginx/html
      - /etc/localtime:/etc/localtime:ro
    labels:
      com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"
    restart: always
  letsencrypt-nginx-proxy-companion:
    image: jrcs/letsencrypt-nginx-proxy-companion:latest
    logging:
      driver: fluentd
      options:
        fluentd-address: ${LOG_SERVER}:24224
        tag: docker.{{.FullID}}
    volumes:
      - ./docker-compose.d/certs:/etc/nginx/certs:rw
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /etc/localtime:/etc/localtime:ro
    volumes_from:
      - proxy
    restart: always

(proxy/Dockerfile)

FROM jwilder/nginx-proxy:latest
RUN echo 'server_tokens off;\n' \
'client_max_body_size 200M;\n' \
> /etc/nginx/conf.d/my_proxy.conf

念の為".env"の内容

LOG_SERVER=127.0.0.1

利用する側

portが80番の場合は以下が必要

  • environmentにVIRTUAL_HOST/LETSENCRYPT_HOST/LETSENCRYPT_EMAILの指定
  • services ->サービス名 -> networksにフロントのネットワークを指定(※1,2)
  • (最上位のタグの)networksにフロントのネットワークを外部ネットワークとして指定(※1,2)
    ※1フロントのdocker-composeが入っているディレクトリ名+_defaultがデフォルトの名称。
    ※2フロントと同じdocker-composeファイルで管理していたら指定は不要。(ただ、わけないと変更管理が面倒)

    portが80番以外の場合はenvironmentにVIRTUAL_PORTの指定も行ったはず。

version: '3'
services:
  front:
    build: ./front
    restart: always
    container_name: momoyama_front
    depends_on:
      - "app"
      - "momoyama_wp"
    ports:
      - 80
    environment:
      VIRTUAL_HOST: bouldering-climbing.kyoto
      LETSENCRYPT_HOST: bouldering-climbing.kyoto
      LETSENCRYPT_EMAIL: [email protected]
    (略)
    networks:
      - default
      -proxy_default


networks:
  proxy_default:
    external: true

動いているサンプル

ロシェ桃山
ロシェマキシマ

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@qPkJnEPdYTMgQPdyの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!