ServBayでDockerコンテナベースのWebサイトを追加・設定する方法
ServBayはmacOSとWindowsに対応したローカルWeb開発環境で、複数の言語や技術スタックに対応しています。PHPやNode.js、Python、Go、Java、各種データベースなどServBayに標準搭載されているパッケージでWebサイトを直接運用できるだけでなく、Dockerコンテナを用いてWebサイトやサービスを構築・管理することも可能です。この方法は、高い柔軟性・環境分離・一貫性をもたらし、特定の環境や依存関係が必要なプロジェクトにも最適です。
本記事では、Dockerコンテナで稼働するWebサイトをServBay上へ追加し、リバースプロキシ機能を利用してローカル開発フローへ統合する手順を詳しく解説します。
概要
ServBayをリバースプロキシとして設定することで、特定ドメインへのリクエストをDockerコンテナ内部で稼働するサービスのポートへと転送できます。ServBayがHTTPS証明書やドメイン名解決など入口トラフィックを担当し、Dockerコンテナはアプリケーションの運用に集中します。この方法により、ServBayの管理画面の使いやすさと、Dockerの強力なコンテナ技術を組み合わせることが可能です。
下記手順では、Dockerサービスが提供するWebサイトをServBayへ追加・設定する全工程を紹介します。
事前準備
作業を始める前に、以下の条件を満たしていることを確認してください。
- ServBayのインストール・起動済み: macOSにてServBayのインストールおよび起動が完了している。
- Dockerのインストール・起動済み: macOSにDocker Desktopまたは他のDocker環境を導入し、Dockerサービスが稼働している。
- Dockerイメージ・コンテナの準備完了: Webサイトやアプリケーションを含むDockerイメージをビルドまたは取得済みで、そのイメージからコンテナを起動できる状態である。
サイト追加の具体的手順
ステップ1:Dockerコンテナの準備・起動
まず、Dockerコンテナが稼働していることを確認し、コンテナ内のサービス(Webサーバー等)がDockerのポートマッピング機能を介して、ホスト(macOS)の利用可能なポートに公開されている必要があります。
たとえば、Nginxを使ったシンプルなコンテナで、内部で80番ポートをリッスンする場合、以下のコマンドでホスト8080番ポートへ公開できます。
bash
docker run -d --name my-nginx-servbay -p 8080:80 nginx
1
この例では、Dockerコンテナmy-nginx-servbay
内部のNginxサービスは80
番ポートで待ち受けしていますが、-p 8080:80
オプションによって、コンテナの80
番ポートがホストの8080
番ポートに割り当てられています。ServBayからはホスト側の8080
番ポートへ接続することになります。
ご自身のアプリやDockerfile構成に合わせて、サービスが正しいポートをリッスンし、ホスト上の任意のポートへマッピングされているかを確認してください。
ステップ2:ServBay管理画面の起動
macOSのアプリケーションフォルダからServBay
アイコンを探し、ダブルクリックして管理画面を開きます。
ステップ3:サイト管理ページへ移動
ServBayを開くとホーム画面が表示されます。左側のナビゲーションメニューにあるサイト
をクリックしてください。ここからServBayのサイト管理ページへ移動し、追加済みローカルサイトの一覧・設定が可能です。
図:左側ナビゲーション欄の「サイト」をクリックして管理画面へ移動します。
ステップ4:新しいサイトを追加
サイト管理画面下部には+
ボタンが表示されています。このボタンをクリックすると、右側エリアに新規サイト用の設定フォームが展開されます。
図:画面下部「+」ボタンをクリックして新しいサイトを追加します。
ステップ5:サイト設定の入力
新規サイト設定フォームで、以下の項目を入力します。
- 名称 (Name): サイト管理用に分かりやすい名前(例:
Docker Nginx デモ
)を入力します。ServBay内での管理目的なので任意です。 - ドメイン (Domain): Dockerコンテナのサイトへブラウザからアクセスするためのローカルドメイン名を入力します。
.servbay.demo
のような独自サフィックスの使用を推奨(例:docker.servbay.demo
)。ServBayが自動でmacOSのhostsファイルを編集し、このドメインをローカル(127.0.0.1
)へ割り当てます。 - プロトコル (Protocol): サイトで利用するプロトコルを選択します。通常は
HTTP/HTTPS
で問題ありません。ServBayはHTTP(80)とHTTPS(443)両方のポートを監視し、SSL設定に応じて処理します。 - SSL証明書取得方法 (SSL Certificate Request Method):
ServBay CA
の選択を推奨。ServBayが自動でローカル信頼済みSSL証明書(ServBay User CA発行)を生成・管理します。ServBay Public CAをシステムキーチェーンにインストールすることで、ブラウザがローカル証明書を信頼するようになり、HTTPS開発・テストが容易です。他にもACME
(Let's Encrypt等)やCustom
(独自証明書)も選択可。 - サイトタイプ (Website Type): 【重要】
リバースプロキシ(Reverse Proxy)
を選択します。これにより、ServBayが指定ドメインの入口となり、リクエストを指定したバックエンドサービス宛に転送します。 - IPアドレス (IP Address): DockerコンテナサービスがリッスンするホストIPアドレスを記入します。多くのローカルDocker環境では
127.0.0.1
が推奨です。 - ポート (Port): ホスト上で公開されているDockerサービスのポート番号を入力します。
docker run -p <ホスト側ポート>:<コンテナ側ポート>
コマンド指定の<ホスト側ポート>
部分です。例:-p 8080:80
なら8080
を記入。
図:Dockerリバースプロキシサイトの設定情報を入力します。
ステップ6:設定を完了し保存
必要事項を全て記入し終えたら、フォーム下部の追加(Add)
ボタンをクリックします。
ServBayが自動でWebサーバー(CaddyやNginx等)の設定に対応するリバースプロキシルールを追加し、システムのhostsファイルも更新して指定ドメインをローカルIPに割り当てます。
保存が完了すると、設定内容の適用にしばらく時間がかかる場合がありますが、すぐに追加したドメインへアクセス可能です。
ステップ7:サイトへのアクセスと便利な操作
設定が保存されると、サイト管理画面で新サイトの一覧を確認できます。ステータスが「稼働中」と表示されていることを確認してください。
今後は、ブラウザで指定したドメイン(http://docker.servbay.demo
またはhttps://docker.servbay.demo
等)へアクセスできます。設定が正しければ、ServBayによりリクエストがDockerコンテナのサービスへ転送され、コンテナが提供するWebページが表示されます。
サイト一覧には便利な操作ボタンも用意されています。
- IDEでサイトルートディレクトリを開く: (リバースプロキシタイプのサイトでは、このボタンは設定ディレクトリなどを指す場合があり、ServBayのバージョン・設定により動作が異なります)
- ブラウザでサイトを開く: サイトURLを新規タブですばやく開けます。
- サイトのログ参照: サイトのアクセスログやエラーログを確認できます(デバッグに便利)。
- サイトの一時停止・再開: ServBayのリバースプロキシ設定を一時的に無効化/再度有効化。
- サイトの削除: サイトの設定をServBayから完全に削除します。
図:ServBayサイト一覧の便利な操作ボタン例。
注意点・ベストプラクティス
- Dockerコンテナの状態: 対象Dockerコンテナが常時稼働していることを確認してください。未稼働の場合、ServBayはリクエストを転送できません。
- ポートマッピング: Dockerの
-p
オプションで指定したポートと、ServBay設定で記入したポート番号が一致しているか、そしてそのポートが他アプリに使われていないか事前に確認しましょう。 - ファイアウォール: macOSのファイアウォール設定でServBayのポート(既定値80, 443)およびDockerが公開したホストのポートが遮断されていないか確認してください。
- Dockerネットワークモード: 通常は
bridge
モード+ポートマッピングが最も簡単です。host
モードの場合はコンテナ内部のポートへ直接アクセスできますが、ポート競合の注意が必要です(例:コンテナが80で待ち受けする場合、ServBayの設定に80を指定)。 - ServBay CA: HTTPS開発を快適に行うため、ServBay Public CAのインストールを強く推奨します。これにより、ServBayが発行するローカル証明書がブラウザでも信頼されるため、セキュリティ警告などが表示されません。
FAQ(よくある質問・トラブルシューティング)
Q: サイトを追加してもアクセスできず、ブラウザで接続エラーやタイムアウトが出る
A: 以下の項目を順に確認してください。
- ServBayでサイトが稼働中か: サイト管理画面でステータスが「稼働中」になっているか確認。
- Dockerコンテナが稼働中か: ターミナルで
docker ps
を実行し、対象コンテナが起動中であることを確認。 - Dockerのポートマッピング:
docker ps
のPORTS欄を確認し、ホストポート(例:0.0.0.0:8080->80/tcp
や127.0.0.1:8080->80/tcp
の8080
部分)がServBay設定内容と一致するか確認。 - コンテナ内部サービスの確認: NginxやApache、Nodeなどコンテナ内Webサービスが正しいポートで起動しているか、またエラーがないか(
docker logs <コンテナIDまたは名称>
でログ確認)。 - ServBayのログの確認: サイト管理画面で該当サイトのログアイコンをクリックし、アクセス/エラーログに詳細情報がないか確認。
- hostsファイルの確認:
/etc/hosts
ファイルを開き、ドメインが127.0.0.1
に正しく向いているか確認(通常はServBayが自動処理)。 - ファイアウォール確認: ServBayやDockerの使用ポートがファイアウォールで遮断されていないか。
Q: ServBayでDockerコンテナ自体も管理できる?
A: ServBayはローカルWebサービス・DB・言語環境の管理や、後方サービス(Dockerコンテナ含む)へのトラフィックルーティングが主な役割です。Dockerコンテナのライフサイクル管理(起動・停止・イメージビルド等)は備えていないため、Docker CLIやDocker DesktopのUIなどでコンテナ操作を行う必要があります。
Q: ServBay CAとは?インストールの必要性は?
A: ServBay CA(Certificate Authority)は、ローカルでHTTPS開発を円滑に進めるための証明書管理機構です。ServBay User CAでローカルサイト向けSSL証明書を発行し、ServBay Public CAをシステムキーチェーンにインストールすることで、OSやブラウザがServBay発行証明書を信頼します。これにより、ローカルServBayサイトへHTTPSアクセス時に「安全でない接続」警告が出ず、実運用環境に近い開発・テストが行えます。
まとめ
ServBayへDockerコンテナベースのWebサイトを追加することで、ローカル開発環境の統合拠点としてServBayの流量・ドメイン管理力とDockerの環境分離技術を最大限に活用できます。シンプルなリバースプロキシ設定で、さまざまなDockerプロジェクトをServBayワークフローへ簡単に統合可能です。記事内の手順と注意事項を参考に、Docker化されたローカルサイトを素早くセットアップ・運用しましょう。