#はじめに
conohaのvpsでサービス運用を始めようと思います.
ただ,SSL可に意外と苦戦したのでまとめておきます.
#状況
・ubuntu+docker
・ドメイン取得済み
・Golangのbeegoでwebサーバーを立てている.
httpsでの接続をするためには,SSL証明書が必要.
オレオレ証明書はローカル運用でしか,利用できない.
letsencryptをUbuntu16.04 + Nginxで使ってみただと,docker内に作用することができない.
個人運営サイトのSSLをDockerで良い感じに設定するだと,コンテナが2つあって難しそう.
#結果
https-portalなるコンテナを利用することで,解決できました!!
#####メリット
・既存のコンテナサービスが簡単にSSL可できる
・わかりやすい
・自動で証明書を更新してくれる.
・証明書の切替ができる(オレオレ/production)
・https-portalで既存のdocker環境をhttps化
・既存環境に手を加えずにサクッとHTTPS化する (NAT配下でもok)
・【7】SteveLTN/HTTPS-PORTALを使ってLet's Encryptで全自動SSL対応を行う(GCP(GCE),Rails,Nginxリバースプロキシ,Docker)
#実装
version: '2'
services:
db:
build:
context: ./MySQL
env_file:
- prod.env
container_name: go_db
ports:
- "3306:3306"
tty: true
restart: always
volumes:
- ./MySQL/mysql_init:/docker-entrypoint-initdb.d
- ./MySQL/mysql_data:/var/lib/mysql
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_bin --skip-character-set-client-handshake --lower_case_table_names=1
app:
build:
context: ./Go
dockerfile: Dockerfile.prod
volumes:
- "./Go:/go/src/app"
container_name: go_app
env_file:
- prod.env
ports:
- "8080:8080"
tty: true
restart: always
depends_on:
- db
https-portal:
image: steveltn/https-portal:1
container_name: https_portal
ports:
- "80:80"
- "443:443"
tty: true
restart: always
volumes:
- ./Certs/:/var/lib/https-portal/
environment:
DOMAINS: 'domain〇〇 -> http://app:8080'
STAGE: "production"
# FORCE_RENEW: 'true'
links:
- app
この方法だと,ローカルの開発環境もサラッとSSL適用できるので,(・∀・)イイネ!!