質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

2回答

7006閲覧

Dockerを利用したnginxで複数プロジェクトに別々のポートを設定して管理したい

chikuwanabe

総合スコア12

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2018/04/04 07:55

編集2018/04/06 09:09

vpsサーバ(centos7)にdocker-composeを使ってnginx(1.13.10),mysql(5.7)の環境を作りlaravelを動かしているのですが、
プロジェクトを増やさなければならなくなり、新しいプロジェクトファイル設置後にnginxの設定ファイルを色々変更してみてはいるのですが「ERR_CONNECTION_REFUSED」になり、上手く表示する事が出来ません。
※既存のプロジェクトファイルは問題なく動いています。

DockerFileやDockercomposeの設定ファイルも変更する必要があるのでしょうか?

ご教示お願いします。

nginx/default.conf

nginx

1server { 2 3 listen 80; 4 server_name 133.242.162.205; 5 root /var/www/project01/public; 6 index index.php index.html index.htm; 7 8 location / { 9 try_files $uri $uri/ /index.php$is_args$args; 10 } 11 12 location ~ .php$ { 13 try_files $uri /index.php =404; 14 fastcgi_pass php-upstream; 15 fastcgi_index index.php; 16 fastcgi_buffers 16 16k; 17 fastcgi_buffer_size 32k; 18 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 19 #fixes timeouts 20 fastcgi_read_timeout 600; 21 include fastcgi_params; 22 } 23 24 location ~ /.ht { 25 deny all; 26 } 27 28 location /.well-known/acme-challenge/ { 29 root /var/www/letsencrypt/; 30 log_not_found off; 31 } 32} 33 34server { 35 36 listen 8080; 37 server_name 133.242.162.205; 38 root /var/www/project02/public; 39 index index.php index.html index.htm; 40 41 location / { 42 try_files $uri $uri/ /index.php$is_args$args; 43 } 44 45 location ~ .php$ { 46 try_files $uri /index.php =404; 47 fastcgi_pass php-upstream; 48 fastcgi_index index.php; 49 fastcgi_buffers 16 16k; 50 fastcgi_buffer_size 32k; 51 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 52 #fixes timeouts 53 fastcgi_read_timeout 600; 54 include fastcgi_params; 55 } 56 57 location ~ /.ht { 58 deny all; 59 } 60 61 location /.well-known/acme-challenge/ { 62 root /var/www/letsencrypt/; 63 log_not_found off; 64 } 65}

docker-compose.yml

nginx: build: context: ./nginx args: - PHP_UPSTREAM_CONTAINER=${NGINX_PHP_UPSTREAM_CONTAINER} - PHP_UPSTREAM_PORT=${NGINX_PHP_UPSTREAM_PORT} volumes_from: - applications volumes: - ${NGINX_HOST_LOG_PATH}:/var/log/nginx - ${NGINX_SITES_PATH}:/etc/nginx/sites-available ports: - "${NGINX_HOST_HTTP_PORT}:80" - "${NGINX_HOST_HTTPS_PORT}:443" depends_on: - php-fpm networks: - frontend - backend

Dockerfile

FROM nginx:alpine MAINTAINER Mahmoud Zalt <mahmoud@zalt.me> ADD nginx.conf /etc/nginx/ # If you're in China, or you need to change sources, will be set CHANGE_SOURCE to true in .env. ARG CHANGE_SOURCE=false RUN if [ ${CHANGE_SOURCE} = true ]; then \ # Change application source from dl-cdn.alpinelinux.org to aliyun source sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories \ ;fi RUN apk update \ && apk upgrade \ && apk add --no-cache bash \ && adduser -D -H -u 1000 -s /bin/bash www-data ARG PHP_UPSTREAM_CONTAINER=php-fpm ARG PHP_UPSTREAM_PORT=9000 # Set upstream conf and remove the default conf RUN echo "upstream php-upstream { server ${PHP_UPSTREAM_CONTAINER}:${PHP_UPSTREAM_PORT}; }" > /etc/nginx/conf.d/upstream.conf \ && rm /etc/nginx/conf.d/default.conf CMD ["nginx"] EXPOSE 80 443

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xenbeat

2018/04/06 08:46

> 上手く表示する事が出来ません → 誰しも質問者さんと同じ環境ではないので具体的に書いてください。エラーメッセージやログを追記する等。
chikuwanabe

2018/04/06 09:11

またまたご指摘有難う御座います。仰る通りですね、エラーメッセージは書くべきでした。取り急ぎ追記致しました。
guest

回答2

0

新しいプロジェクトファイル設置後にnginxの設定ファイルを色々変更してみてはいる

ざっと見てnginxの設定自体は問題なさそうなので、質問記載時点の状態に戻していただいてdocker-compose.ymlのportsを変更してみてください。

nginx: ... ports: - "${NGINX_HOST_HTTP_PORT}:80" - "8080:8080" ←追記 - "${NGINX_HOST_HTTPS_PORT}:443"

そして念のため以下も行っておくと良いでしょう。
0. compose stop
0. ブラウザキャッシュをクリア
0. compose up

そうすると以下でアクセスできるはずです。

project01: http://133.242.162.205
project02: http://133.242.162.205:8080

質問者さんと同様の環境を用意するのが難しいので未検証での回答ご容赦ください。

投稿2018/04/06 18:20

xenbeat

総合スコア4258

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chikuwanabe

2018/04/07 12:28

限定的な情報の中、ご教示頂き有難う御座います。 今回はどうしてもうまく行かなかった為、適当なドメインを振って対応する事にします。 有難う御座いました。
guest

0

こんばんは。
他のDockerfileやdocker-compose.ymlも抜粋で提供いただけるといいのですが、とりあえず思いつく辺りを。

nginxのport: 80はdocker-composeで

ports: - “80:80"

といった設定でコンテナの80番をホスト (vpsサーバ)にフォワードしている感じでしょうか。
その上で、nginxの2つめのプロジェクトとして8080番を使ってサービスを立ち上げている場合は、

ports: - "80:80" - "8080:8080"

という具合に、やはりホスト側にフォワードするようにしてあげないとアクセスできないかと思います。

投稿2018/04/04 11:47

suama

総合スコア1997

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chikuwanabe

2018/04/04 16:48

ご教示有難う御座います。 docker側のファイルも変更して試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問