[docker] Nginxを利用して1つのホストの複数のWEBサーバを構築する方法

サーバのリソースが余っていて、別のホストにWEBサーバを建てるのがもったいない場合、Dockerを使用すれば、複数の同じ種類のアプリを1つのホスト上に構築することができる

ただ、Dockerだけだと、80番ポートで待受けることができるWEBサービスは1つだけになってしまい、他のWEBサービスは8080番で待つという非常にユーザビリティの低い構成になってしまう。

アクセスしてきたURLによって、通信すべきWEBサービスを振分けるにはnginxをDocker上に構築すれば、すべてのWEBサービスは80番で待ち受けることができる。

目次

0.AWS LinuxにDockerをインストール

*AmazonLinux2023にDockerをインストールするにはこちら

Amazon Linux2023にDocker版Bitnami WordPressをインストールする

AWS LinuxにDockerをインストールするには

amazon-linux-extras install docker

を打つだけ

もしRepositoryエラーがでる場合は、上記コマンドを打つ前にRepositoryを登録している可能性があるので、Repositoryを削除して上記コマンドを実行する

cd /etc/yum.repos.d/
rm docker-ce.repo

インストールが完了したら

systemctl start docker
systemctl enable docker

で起動させる

念の為バージョンも確認しておく

docker --version

1.Docker Networkを構築

docker network create nginx-proxy

nginx-proxyというDocker Networkを構築して、DockerコンテナがこのNetworkを通じて相互通信できるようにする

2.nginx-proxyを構築

docker run -d -p 80:80 --name nginx-proxy --net nginx-proxy -v /var/run/docker.sock:/tmp/docker.sock jwilder/nginx-proxy

nginx-proxyをDockerコンテナとして構築し、待受ポートは80番としておく

またこれによりNginxがDocker Socketの状態を監視することで、ポートフォワーディングを行うことができるようになる

3.Virtual Host付きのWEBサービスのコンテナを構築

docker run -d --name blog --expose 80 --net nginx-proxy -e VIRTUAL_HOST=blog.DOMAIN.TLD wordpress

ここでは「blog.DOMAIN.TLD」というホスト名のWordpressを構築している

例:Dokuwikiを配置

docker run -d --name [名前] --expose 80 --net nginx-proxy -v /var/lib/docker/volumes/[ボリュームの名前]:/bitnami/dokuwiki -e VIRTUAL_HOST=[FQDN名] bitnami/dokuwiki:latest

4.DNSサーバにFQDNを登録

ホストのIPアドレスを叩いてもNginxはトラフィックをフォワードしてくれないので、先程設定したVirtualHostのFQDNをDNSサーバに登録する

参考URL:https://blog.ssdnodes.com/blog/host-multiple-websites-docker-nginx/

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です