Weekly Learning
2025-04-16
今週の学びのメモです。
- Docker ネットワークにホストも参加する
Docker ネットワークにホストも参加する
ホスト上で Web アプリを起動して nginx でリバースプロキシ
go 製の Web アプリを実行します。
専用の環境も必要なくコマンドとして実行するだけなので、このアプリは Docker を利用せずにホスト上で実行します。
そして Docker 上の nginx をリバースプロキシとして利用するのが目的です。
docker-compose
「compose_net」という名前のネットワークを作成しました。
nginx コンテナもこのネットワークに参加しています。
nginx の IP アドレスは 172.28.0.4 です。
ホストの IP アドレスは gateway で設定している 172.28.0.1 です。
services:
nginx:
container_name: nginx
ports:
- "443:443"
- "80:80"
...
networks:
compose_net:
ipv4_address: 172.28.0.4
networks:
compose_net:
driver: bridge
ipam:
config:
- subnet: 172.28.0.0/16
gateway: 172.28.0.1
nginx
proxy_pass のところはホストの IP アドレスを指定しています。
また、起動している Web アプリのポートは 8899 です。
server {
...
location / {
proxy_pass http://172.28.0.1:8899/;
}
}
ポートの許可
現在の許可ポートの確認
$ sudo ufw status
Web アプリのポートが 8899 なので、8899 を許可します。
許可するのは作成したネットワークからのアクセスに限定します。
$ sudo ufw allow from 172.28.0.0/16 to any port 8899
以下のような設定になりました。
$ sudo ufw status
Status: active
To Action From -- ------ ----
OpenSSH ALLOW Anywhere
8899 ALLOW 172.28.0.0/16
OpenSSH (v6) ALLOW Anywhere (v6)