🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

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回答

2448閲覧

docker+php+nginx+mysql ブラウザに表示されない

kokok

総合スコア145

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

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クリップ

投稿2019/12/14 04:21

dockerをインストールして

docker-compose version
-->
docker-compose version 1.24.1, build 4667896b
docker-py version: 3.7.3
CPython version: 3.6.8
OpenSSL version: OpenSSL 1.1.0j 20 Nov 2018

コマンドでバージョンが出たので、正常にインストールされていると思います。

portfolio
├── docker-compose.yml
├── mysql
│ ├── data
├── nginx
│ ├── nginx.conf
├── php
│ ├── Dockerfile
│ ├── php.ini
├── www
│ ├── html
│ ├── ├──index.php

上記のファイル構成で

yml

1//docker-compose.yml 2 3version: '3' 4services: 5 nginx: 6 image: nginx:latest 7 ports: 8 - 8080:80 9 volumes: 10 - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf 11 - ./www/html:/var/www/html 12 depends_on: 13 - php 14 15 php: 16 build: ./php 17 volumes: 18 - ./www/html:/var/www/html 19 depends_on: 20 - db 21 22 db: 23 image: mysql:5.7 24 ports: 25 - 13306:3306 26 volumes: 27 - ./mysql/data:/var/lib/mysql 28 environment: 29 MYSQL_ROOT_PASSWORD: secret 30 31 phpmyadmin: 32 image: phpmyadmin/phpmyadmin:latest 33 ports: 34 - 8888:80 35 depends_on: 36 - db

conf

1 2//nginx.conf 3 4server { 5 listen 80; 6 server_name _; 7 8 root /var/www/html; 9 index index.php index.html; 10 11 access_log /var/log/nginx/access.log; 12 error_log /var/log/nginx/error.log; 13 14 location / { 15 try_files $uri $uri/ /index.php$is_args$args; 16 } 17 18 location ~ .php$ { 19 fastcgi_pass php:9000; 20 fastcgi_index index.php; 21 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 22 include fastcgi_params; 23 } 24}

Dockerfile

1FROM php:7.2-fpm 2COPY php.ini /usr/local/etc/php/

ini

1 2//php.ini 3date.timezone = "Asia/Tokyo"

php

1//index.php 2 3<php 4phpinfo();

作業ディレクトリに移動して
docker-compose up -dを入力するとPHP、MySQL、Nginxがインストールしています。

docker psを入力して、コンテナが立ち上がっているか確認
docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0a73f90325e5 nginx:latest "nginx -g 'daemon of…" About an hour ago Up 4 seconds 0.0.0.0:8080->80/tcp portfolio_nginx_1
c58e6d6cc619 phpmyadmin/phpmyadmin:latest "/docker-entrypoint.…" About an hour ago Up 5 seconds 0.0.0.0:8888->80/tcp portfolio_phpmyadmin_1
842ce085edd2 portfolio_php "docker-php-entrypoi…" About an hour ago Up 5 seconds 9000/tcp portfolio_php_1
39c18f78642d mysql:5.7 "docker-entrypoint.s…" About an hour ago Up 5 seconds 33060/tcp, 0.0.0.0:13306->3306/tcp portfolio_db_1

となります。

この状態で、localhost:8080にアクセスすると画面が真っ白で何も表示されません。
phpが動いていないのかと思い、index.htmlを作成して動かしてみても、画面が真っ白のままでした。

ログ?で
GET / HTTP/1.1" 200 43
と出るので

HTTP200は「OK」を表すステータスコードで、リクエストが受理されたことを表します。Webページが正常に開いている時はこのコードが返ってきます。

ページは返されていると思うのですが、違うのでしょうか?

どこかの設定が間違っている気がするのですが、アドバイスいただけると助かります。

os:mac

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

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

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

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

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

guest

回答1

0

自己解決

phpのタグのミスでした。

---追記----
表示しようとした、index.phpの開始タグが<php>となってしまっていたため、<?php>に変更しました。
index.htmlに関しては、portfolioフォルダを最初デスクトップに作っていたのを、コピーして違う場所に作成してしまっていて、表示したいindex.htmlはデスクトップの方に、ファイルを置いてしまっていたため、index.phpが呼ばれてしまい、そのindex.phpは<php>とタグがなっていたので、表示されなくなっていました。

--自分なりの解決までの手順---

dockerのインストールを確認
docker-compose version

コンテナが立ち上がっているか確認
docker ps

localhost:8080にアクセスする

今回はindex.phpが表示されなかった。

その場合、index.htmlを作成してみる。

それで、index.htmlが表示されれば、(localhostでアクセス)webサーバの設定には問題ないと思います。(ないのか?)
index.htmlが表示されて、index.phpが表示されてないということは、phpのコードにミスがあるか、phpが動いていないかだと思います。

phpのコードにミスの場合、今回はエラーというか画面に全く表示されないという現象だったので、index.phpの開始タグとか意識して見てみるといいと思います。(他の場合もあると思いますが)

コードも原因では、ないとなれば、phpが動いていないということだと思いますが、PHP設定ファイル(php.ini)の確認をしてみるといいと思います。

少しでも、参考になれば幸いです。。

投稿2019/12/14 05:02

編集2019/12/14 08:03
kokok

総合スコア145

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

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

m.ts10806

2019/12/14 05:53

でもそれって「index.htmlを作成して動かしてみても」と繋がらないように思います。 <phpのまま拡張子だけ変えたということですか? 質問内容の現象や試したことに対して回答における説明が足りていないと思います
退会済みユーザー

退会済みユーザー

2019/12/14 07:03 編集

>phpのタグのミスでした。 ><phpのまま拡張子だけ変えたということですか? おす! おめぇら、会話それで成立してんのか?
m.ts10806

2019/12/14 07:35 編集

kokokさん 追記確認しました。 そういうことですね。「作成して」とあったので、最低限の(ローカルでも実行確認できる)HTML打つとか最悪「test」だけ書いて実行するのではないかなと思って、「真っ白」だったので、index.phpをリネームしただけでindex.htmlとしたのかと思っていました(一応htmlタグのルールが適用されて「真っ白」にはなります) 特に今回は問題解決した回答となっていますし、具体的に書かれないと後から同じような問題を抱えた人が読んだときに「なぜこうなったのか」が分かるようにできるだけ具体的に書いていただいたほうが良いです。 https://teratail.com/help#resolve-myself >また後から読む人のためにも、具体的な解決手順を記載してください。
退会済みユーザー

退会済みユーザー

2019/12/14 07:34

いや、質問者は悪くねぇんだけんどもよう、 質問者が『タグが間違ってました』って言ってんのに、ハンディカムが『<phpのまま拡張子だけ変えたということですか?』って、何いってんだ? こいつ? ってなんだろ?普通。
kokok

2019/12/14 08:08

m.ts10806さん さすがに、解決した方法が最初のままだと、同じ問題を抱えた人のためにならなかったです。まだまだ、知識不足ですが、少しでも同じ問題を抱えた人が参考にできるような文章にするように今後も気を付けていきたいと思います!
m.ts10806

2019/12/14 08:37

kokokさん はい。そのあたり意識できるようになるといい質問ができるようにもなると思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問