Wizard Notes

Python, JavaScript を使った音楽信号分析の技術録、作曲活動に関する雑記

DockerのNginx+uWSGI+FlaskサーバをHTTPS(SSL)対応

Webサイトの運営や個人情報・コンテンツを扱うWebサービスを作る上で、httpsSSL)対応は今や欠かせません。

というわけで、Dockerで気軽に適用できないか試行錯誤したところ、以下の方法でうまく行きました。 HTTPS通信を受けるNginxコンテナを新たに追加します。

ベース

qiita.com

変更点

docker-compose.yml

nginx-sslvolumesを追加

version: "2"
services:

  uwsgi:
    build: ./app
    volumes:
      - ./app:/var/www/
    ports:
      - "3031:3031"
    environment:
      TZ: "Asia/Tokyo"

  nginx:
    build: ./nginx
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
    links:
      - uwsgi
    ports:
      - "80:80"
    environment:
      TZ: "Asia/Tokyo"

# 以下を追加する
  nginx-ssl:
    image: valian/docker-nginx-auto-ssl
    restart: on-failure
    ports:
      - 443:443
    volumes:
      - ssl_data:/etc/resty-auto-ssl
    environment:
      ALLOWED_DOMAINS: 'yourdomain.com'
      SITES: 'yourdomain.com=nginx:80'

volumes:
  ssl_data:

Makefile

NAME=flaskapp

run:
    docker-compose build
    docker-compose up -d

stop:
    docker stop ${NAME}_uwsgi_1 ${NAME}_nginx_1 ${NAME}_nginx-ssl_1
    docker rm ${NAME}_uwsgi_1 ${NAME}_nginx_1 ${NAME}_nginx-ssl_1