
前回の作業でnginx_proxyを使ってリバースプロキシ機能を実現できたので、最後にSSL化するためのnginxproxy/acme-companionを利用してみた。
1. nginxproxy/acme-companionの導入
0. 手順
- nginx_proxyや既存のサービス(portainerを除く)で使っていたcontainer, volumeを削除
- nginx_proxyで利用したdocker-compose.ymlを修正
cd /var/www/nginx_reverse_proxy
vim docker-compose.yml
version: '2'
networks:
default:
external: true
name: xservervps_ssl_network
services:
nginx-proxy:
container_name: nginx-proxy
image: jwilder/nginx-proxy:latest
ports:
- 80:80
- 443:443
volumes:
- ./certs:/etc/nginx/certs:ro
- ./vhost:/etc/nginx/vhost.d
- ./html:/usr/share/nginx/html
- /var/run/docker.sock:/tmp/docker.sock:ro
restart: always
environment:
TZ: Asia/Tokyo
HTTPS_METHOD: noredirect
labels:
- "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy"
letsencrypt-nginx-proxy-companion:
image: nginxproxy/acme-companion
container_name: nginx-letsencrypt
volumes:
- ./certs:/etc/nginx/certs
- ./vhost:/etc/nginx/vhost.d
- ./html:/usr/share/nginx/html
- ./acme:/etc/acme.sh
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: always
depends_on:
- nginx-proxy
environment:
TZ: Asia/Tokyo
DEAULT_EMAIL: "hogehoge@hogehoge.com"
docker compose up -d
2. containerで作成したサービスのサブドメインをSSL化する
手順
- SSLしたいサブドメインのcontainerのdocker-compose.ymlを修正
- docker compose up -dで立ち上げる
cd /var/www/test_wordpress
vim docker-compose.yml
version: '2'
volumes:
wp_mysql_data:
services:
db:
image: mysql:5.7
volumes:
- wp_mysql_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
image: wordpress:latest
depends_on:
- db
restart: always
environment:
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
VIRTUAL_HOST: test.hogehoge.com
LETSENCRYPT_HOST: test.hogehoge.com
TZ: Asia/Tokyo
networks:
default:
external: true
name: xservervps_ssl_network
docker compose up -d
これで問題なく稼働するはずですが、Chromeで一度test.hogehoge.comにアクセスして「ちゃんとSSL化されていません!」ってエラーが出るとそのキャッシュがしばらく残り続けるので、シークレットモードや他のブラウザで動くことを確認してください。