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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

nginx

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

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

Q&A

解決済

1回答

5954閲覧

nginxのコンテナからfastcgiでphpのコンテナにアクセスすると502が返ってくる

Yuya4

総合スコア25

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

nginx

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

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

0グッド

0クリップ

投稿2020/05/17 09:02

前提・実現したいこと

docker-compseを使わずに、docker network createを利用してnginxとphp (laravel) の環境を作ろうとしています。

発生している問題・エラーメッセージ

http://127.0.0.1:10080/
にアクセスすると502が返ってきて、以下のようなエラーログが出ます。
fastcgiでのコンテナ間通信がうまくいっていないとは思うんですが、どうすればいいかわかりません。。。
どのようにソースコードを修正すればよいでしょうか?

connect() failed (111: Connection refused) while connecting to upstream, client: 172.29.0.1, server: , request: "GET / HTTP/1.1", upstream: "fastcgi://172.29.0.2:9000", host: "127.0.0.1:10080"

###実行したコマンド
実行したコマンドは以下の通りです。

$ docker network create my_network $ docker run --rm -itd --name app --net my_network laravel-app/php-fpm /bin/sh $ docker run -d --net my_network -p 10080:80 --name web laravel-app/nginx

該当のソースコード

nginx

Dockerfile

1FROM nginx:1.17-alpine 2 3ENV TZ="Asia/Tokyo" 4COPY ./docker/nginx/default.conf /etc/nginx/conf.d/default.conf 5COPY ./src /work 6 7VOLUME logs:/var/log/nginx 8 9EXPOSE 10080

default.conf

1server { 2 listen 80; 3 root /work/public; 4 index index.php; 5 charset utf-8; 6 7 location / { 8 root /work/public; 9 try_files $uri $uri/ /index.php$is_args$args; 10 } 11 12 location ~ .php$ { 13 fastcgi_split_path_info ^(.+.php)(/.+)$; 14 fastcgi_pass app:9000; # 127.0.0.1:9000;にしてもダメでした。 15 fastcgi_index index.php; 16 include fastcgi_params; 17 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 18 fastcgi_param PATH_INFO $fastcgi_path_info; 19 } 20}

php

Dockerfile

1FROM php:7.3-fpm-alpine 2 3ENV TZ="Asia/Tokyo" 4 5WORKDIR /work 6COPY ./docker/php/php.ini /usr/local/etc/php/php.ini 7COPY ./src . 8 9RUN set -eux && \ 10 apk add --update-cache --no-cache --virtual=.build-dependencies tzdata && \ 11 cp /usr/share/zoneinfo/${TZ} /etc/localtime && \ 12 apk del .build-dependencies && \ 13 docker-php-ext-install bcmath pdo_mysql && \ 14 curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer && \ 15 composer config -g repos.packagist composer https://packagist.jp && \ 16 composer global require hirak/prestissimo && \ 17 composer install && \ 18 cp .env.example .env && \ 19 php artisan key:generate && \ 20 chmod -R a+w storage/ bootstrap/cache 21 22VOLUME logs:/var/log/php 23 24EXPOSE 9000

php.ini

1error_reporting = E_ERROR | E_WARNING | E_PARSE | E_NOTICE 2display_errors = stdout 3display_startup_errors = on 4log_errors = on 5error_log = /var/log/php/php-error.log 6upload_max_filesize = -1 7memory_limit = -1 8post_max_size = 100M 9max_execution_time = 900 10max_input_vars = 100000 11default_charset = UTF-8 12 13[Date] 14date.timezone = ${TZ} 15 16[mbstring] 17mbstring.language = Japanese

補足情報(FW/ツールのバージョンなど)

Docker version 19.03.8, build afacb8b
ProductName: Mac OS X
ProductVersion: 10.15.1
BuildVersion: 19B2106

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

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

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

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

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

guest

回答1

0

自己解決

開いたつもりの9000ポートが開いてなかった。
php-fpmも起動していない。

/work # hostname -i 172.29.0.2 /work # nmap -p 9000 172.29.0.2 Starting Nmap 7.80 ( https://nmap.org ) at 2020-05-17 14:19 UTC Nmap scan report for 3a304fdc8e5d (172.29.0.2) Host is up (0.000065s latency). PORT STATE SERVICE 9000/tcp closed cslistener Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds /work # ps PID USER TIME COMMAND 1 root 0:00 /bin/sh 6 root 0:00 sh 22 root 0:00 ps

phpのコンテナにCMD /usr/local/sbin/php-fpm追加して、起動コマンドを$ docker run --rm -itd --name app --net my_network laravel-app/php-fpmに変えて解決。

投稿2020/05/17 14:55

Yuya4

総合スコア25

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問