dockerでnginxからnginx’(ダッシュ)へやnginxからnginx”(ツーダッシュ)に通信させて、
そろぞれのnginxから別のアプリ(laravelとかexpressとか)に通信させたのでその備忘録
図にするとこのような感じ↓
いわれたままにこの通信環境を用意することができたが、こんなにnginxを多用するってなんなんだ・・・
やり方
コンテナ名は
- ↑で書いてあるnginxをwebとし、nginx’をapp-lbとする。
- appをappとする
nginx(web)
server {
listen 80;
location / {
proxy_pass http://app-lb;
}
}
app-lb
server {
listen 80;
root /var/www/html/public;
index index.php;
server_name tablegame.jp;
access_log /var/log/nginx/web_main_access.log ltsv;
location / {
root /var/www/html/public;
index index.php;
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
docker-compose.yml
services:
web:
# Dockerfileを置いているパスとファイル名を指定
build:
context: .
dockerfile: ./nginx/Dockerfile
args:
- CONF_FILE=web
# コンテナ名の指定
container_name: web
restart: always #always:停止しているコンテナを自動的に起動する
ports:
- "8080:80"
depends_on:
- app
networks:
- tablegame-network
app-lb:
build:
context: .
dockerfile: ./nginx/Dockerfile
# コンテナ名の指定
container_name: app-lb
restart: always #always:停止しているコンテナを自動的に起動する
volumes:
- ./laravel/src:/var/www/html
- ./nginx/logs:/var/log/nginx
- ./nginx/conf/dev/laravel.conf:/etc/nginx/conf.d/default.conf
ports:
- "8089:80"
# dockerのビルドにおいて依存先のコンテナが起動してから自身を起動する
# コンテナが所属するネットワークグループの指定
networks:
- tablegame-network
悩んだ点
初めはポート8089でapp-lbを立ててるから8089にアクセスるかと思った(web上でlocalhost:8089を叩くとアクセスできたので)が、app-lbコンテナ自体は80ポートを開いているのでwebコンテナからは単純に80を指定してあげたら行けた。
networksグループで指定しているからかな?
コメント