Dockerでnginx-proxyを使いこなす!複数コンテナの管理&無料SSL化
Docker環境で複数のWebサービスを簡単に運用!nginx-proxyでリバースプロキシを構築し、独自ドメイン&無料SSLを適用する方法を詳しく解説。
複数ドメインで異なるアプリを公開する際に便利なのがDockerのnginxproxyコンテナ
Dockerは簡単にWebサーバーやOSSアプリケーションを公開することができますが、独自ドメインやサブドメインでOSSアプリなどを公開するとなると、フロントのプロキシサーバーが必要になります。また、SSL化が必須になるため、SSLの取得・管理も必要です。
これらを手動で行うと非常に手間ですが、Dockerでは「nginx-proxy」と「acme-companion」という二つのコンテナを用意することで、簡単にDocker環境で独自ドメイン&SSLを運用できるようになります。
nginx-proxy & acme-companion環境の構築
まずは、nginx-proxyとacme-companionの環境を構築します。
docker composeでコンテナ群として構築するのが一番速いで、管理も楽です。
# docker-compose.yml
version: '3'
services:
nginx-proxy:
image: nginxproxy/nginx-proxy
container_name: nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- conf:/etc/nginx/conf.d
- vhost:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- certs:/etc/nginx/certs:ro
- ./htpasswd:/etc/nginx/htpasswd
- /var/run/docker.sock:/tmp/docker.sock:ro
networks:
- common_network
acme-companion:
image: nginxproxy/acme-companion
container_name: nginx-proxy-acme
environment:
- [email protected]
- NGINX_PROXY_CONTAINER=nginx-proxy
volumes:
- conf:/etc/nginx/conf.d
- vhost:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- certs:/etc/nginx/certs:rw
- acme:/etc/acme.sh
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- common_network
volumes:
conf:
vhost:
html:
certs:
acme:
networks:
common_network:
external: true
このコンテナ群では、「common_network」という共通ネットワークを利用するので、common_networkを作成しましょう。
docker network create common_network
あとは、docker-compose.ymlがあるディレクトリで、コンテナを立ち上げます。
docker compose up -d
無事立ち上がればOKです。
他のコンテナで独自ドメイン & SSLを設定する
次に、他のコンテナと連携させます。
まず、連携させたいコンテナを「common_network」ネットワークに参加させます。既存コンテナの場合は、次のコマンドで追加ができます。
# コマンドで実行する場合
docker network connect common_network <コンテナ名またはコンテナID>
# docker-compose.ymlに追記する場合
networks:
common_network:
external: true
コンテナが接続可能になったら、ドメイン情報などを追加します。SSL取得はacme-companionコンテナが行いますが、連携させるコンテナに環境変数を設定しておけば、acme-companionコンテナが自動で諸々の設定をしてくれるので、非常に便利です。
# docker-copmose.ymlの場合
services:
database:
environment:
VIRTUAL_HOST: www.example.com
VIRTUAL_PORT: 8055
LETSENCRYPT_HOST: www.example.com
LETSENCRYPT_EMAIL: [email protected]
必要なのは、
- VIRTUAL_HOST
- VIRTUAL_PORT
- LETSENCRYPT_HOST
- LETSENCRYPT_EMAIL
です。これらをenvironmentに書いておけば、acme-companionコンテナがDocker APIからコンテナの起動や削除を感知して、自動でSSLの取得や更新をし、nginx-proxyコンテナがルーティングを行ってくれます。
DNSでDockerを環境があるVPSなり、クラウドなりに向けてAレコードを追加しておけば、コンテナを立ち上げた時点で全て自動で設定してくれるはずです。
nginx-proxy & acme-companion環境を使う際の注意点
nginx-proxy & acme-companion環境は非常に便利ですが、注意点もあります。
- 先にnginx-proxy & acme-companionが立ち上げておく
- 独自ドメインを使う場合は、先にDNSでAレコードを向けておく
- nginx-proxy & acme-companionに問題があると、連携コンテナ全体が不通になる
- 短時間でコンテナの作成&削除を繰り返すと、SSL取得の上限に引っかかる
以上の4点は、実際に使っていると直面しやすいトラブルなので、予め理解しておきましょう。
価格は記載がある場合を除き、すべて税込みです。
関連キーワード
VPSの新着記事
VPS【無料で使える分析可視化ツール環境】 DockerでMetabaseサーバーを立ち上げる方法 2025.3.11
VPSDockerでStrapi 5プロジェクトを立ち上げる方法 2024.9.25
VPS「4倍の処理能力」の実力は?シンVPSの最安値プランをベンチマーク比較 2024.7.23
VPSVPSのDockerアプリケーションイメージでEC-CUBEサイトを超速で構築する方法 2024.7.20
VPSVPSの低価格プランを選ぶ際のポイントと注意点 2024.6.4
VPSドメインが無料になるVPSはあるのか? 2024.5.27
VPSVPSサーバーの「時間課金」の仕組みをわかりやすく解説 2024.5.23
VPSNextcloudのOSS版とEnterprise版の違いまとめ 2023.12.26
VPSの新着ガイド
【2025年版】AIアプリが構築できる「Dify」を公式より安く簡単に構築できるVPSを徹底比較!
【2025年版】プロジェクト管理OSS「Redmine」を簡単構築できるVPSサービスを徹底比較!
【2025年版】Slackライクなチャットツール「Mattermost」を簡単構築できるVPSサービスを徹底比較!
【2025年版】OSS可視化ツール「Metabase」を簡単構築できるVPSサービスを徹底比較!
【2025年版】魚拓システム「ArchiveBox」を簡単構築できるVPSサービスを徹底比較!
【2025年版】「OpenVPN」サーバーを簡単構築できるVPSサービスを徹底比較!
【2025年版】OSSチャットシステム「Rocket.Chat」を簡単構築できるVPSサービスを徹底比較!
主要VPSサービスの「調整費」まとめ