1アプリ1コンテナ連携 nginx編
いままでと同じく下図の連携ですが、今度は1アプリ1コンテナ群の連携をつくります
nginxのコンテナの作成や操作は前のnginxコンテナ節を、 カスタマイズ方法は付録を参照してください
変更/追加する設定は次のとおりです
- 80/tcpを開く
- リバースプロキシの設定をコンテナに読ませる
- ユーザ定義ネットワーク os に接続する
- 転送する先のコンテナIPアドレスは変わるのでハードコードしてはいけません。
転送先ホスト名は
www.go
、ポートが8080/tcp
になります - コンテナのホスト名は
docker run
実行時の--name
オプションでつける名前になります - DNSの解決をしてくれるのはdockerが用意したDNSサーバ(127.0.0.11)です
- 転送する先のコンテナIPアドレスは変わるのでハードコードしてはいけません。
転送先ホスト名は
- ログを syslog へ転送
解説すると、
- docker runの-p 80:80 (省略して -p 80 も可)オプションで指定
- リバースプロキシの設定は、コンテナ内のnginxに設定ファイルを読ませる必要があります。
ところで、すでにEC2上にnginxをインストール済みだと思いますので、
リバースプロキシの設定も含めて動作確認された設定ファイル(群)がホストの
/etc/nginx/
以下にあるはずです。 そこでdocker run
の-v ホストの場所:コンテナの場所
オプションを使い、 ホスト側のこの場所(/etc/nginx/
)をコンテナに見せることにします。 nginxの設定方法はこちらを参照してください - ネットワークは
--network=os
オプションです - ログの設定は必須ではありませんが、 うまく動かないときに、コンテナのログを見られる ようにしておかないとデバッグが出来ないので、 ログの転送設定をしておきます
これらの変更をすべて入れた起動スクリプトを用意しました。 04_docker/04-91_debian-nginx-www.go-mysql/04-91-01_nginx/scripts/ ディレクトリの run.sh です
実行例: 04_docker/04-91_debian-nginx-www.go-mysql/04-91-01_nginx/scripts/ に移動し run.sh を実行
cd 04_docker/04-91_debian-nginx-www.go-mysql/04-91-01_nginx/scripts/
sh run.sh
run.sh スクリプトの docker を実行する部分を抜粋
docker run -d \
--rm \
--name=nginx \
-p 80:80 \
-v /etc/nginx:/etc/nginx \
--network=os \
--log-driver=syslog \
nginx