前提
- 構成は以下のイメージ
- ホストで80番ポートで受ける、DockerのNginxは80番ポートで受ける、後ろに80番ポートで流す
- docker はインストール済であること、後ろのサーバは動いていること
- Amazon Linux2
Linux ip-172-31-4-104.ap-northeast-1.compute.internal 4.14.219-161.340.amzn2.aarch64
手順メモ
①Nginx設定ファイル作成
素のNginxの設定ファイルから持ってきつつ、リバプロっぽい設定を入れた。
ポイントは include /etc/nginx/conf.d/*.conf;
を削除したところだったぽい。
もともとDockerでNginxを起動するとコンテナ内でこの /etc/nginx/conf.d/*.conf;
ディレクトリに設定ファイルが合ってそちらも読み込まれてしまうとうまくリバプロとして動かなかった。
user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 4096; include /etc/nginx/mime.types; default_type application/octet-stream; server { listen 80; listen [::]:80; server_name _; root /usr/share/nginx/html; location /test { proxy_pass http://[後ろのサーバのIPアドレス]/; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } }
②Dockerファイル作成
[ec2-user@ip-172-31-4-104 docker]$ pwd /home/ec2-user/docker [ec2-user@ip-172-31-4-104 docker]$ ls Dockerfile nginx.conf [ec2-user@ip-172-31-4-104 docker]$ cat Dockerfile FROM nginx:latest ADD ./nginx.conf /etc/nginx/nginx.conf
③ Docker のイメージ作成、コンテナ作成、コンテナ起動
$ sudo docker build -t nginx-img ./ $ sudo docker create --name nginx-container -p 80:80 -it [Image ID] $ sudo docker start [Container ID]
※③' docker-composer でコンテナを実行する場合
以下のように設定ファイルを準備し、実行
[ec2-user@ip-172-31-4-104 docker]$ cat docker-compose.yml version: '3' services: nginx: build: . ports: - "80:80" [ec2-user@ip-172-31-4-104 docker]$ sudo docker-compose up
④動作確認
外からDocker/Nginxのサーバに向けて
http://[IP Addr]/test
で後ろのサーバのコンテンツが返ってくるはず。
参考
nginx https://hub.docker.com/_/nginx
【Docker】Nginxのconfで環境変数を使う - Qiita https://qiita.com/jungissei/items/2d6b40320b520f52b502
Compose を始めましょう — Docker-docs-ja 19.03 ドキュメント https://docs.docker.jp/compose/gettingstarted.html#dockerfile