Server Build Exercises on AWS (Amazon Web Services) 2022 edition

1アプリ1コンテナ連携 nginx編

いままでと同じく下図の連携ですが、今度は1アプリ1コンテナ群の連携をつくります

nginxのコンテナの作成や操作は前のnginxコンテナ節を、 カスタマイズ方法は付録を参照してください

変更/追加する設定は次のとおりです

  1. 80/tcpを開く
  2. リバースプロキシの設定をコンテナに読ませる
  3. ユーザ定義ネットワーク os に接続する
    • 転送する先のコンテナIPアドレスは変わるのでハードコードしてはいけません。 転送先ホスト名はwww.go、ポートが8080/tcpになります
    • コンテナのホスト名はdocker run実行時の--nameオプションでつける名前になります
    • DNSの解決をしてくれるのはdockerが用意したDNSサーバ(127.0.0.11)です
  4. ログを syslog へ転送

解説すると、

  1. docker runの-p 80:80 (省略して -p 80 も可)オプションで指定
  2. リバースプロキシの設定は、コンテナ内のnginxに設定ファイルを読ませる必要があります。 ところで、すでにEC2上にnginxをインストール済みだと思いますので、 リバースプロキシの設定も含めて動作確認された設定ファイル(群)がホストの/etc/nginx/以下にあるはずです。 そこで docker run-v ホストの場所:コンテナの場所オプションを使い、 ホスト側のこの場所(/etc/nginx/)をコンテナに見せることにします。 nginxの設定方法はこちらを参照してください
  3. ネットワークは--network=osオプションです
  4. ログの設定は必須ではありませんが、 うまく動かないときに、コンテナのログを見られる ようにしておかないとデバッグが出来ないので、 ログの転送設定をしておきます

これらの変更をすべて入れた起動スクリプトを用意しました。 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
Last updated on 12 Dec 2021
Published on 12 Dec 2021
Copyright (C) 2021-2022 Ken'ichi Fukamachi, All rights reserved. CC BY-NC-SA 4.0
We appreciate AWS Academy Japan for the offer of the learning environment.

Powered by Hugo. Theme by TechDoc. Designed by Thingsym.