初心者ですので、分かりづらい点あれば申し訳ございません。
・ブラウザに表示されない問題を解消したいです。
※localhostに繋げたい。
出ているエラーメッセージを入力
このサイトにアクセスできません。
※下記画像あり。
例)
このサイトにアクセスできません。
localhostで接続が拒否されました。
ソースコード
例)
//dokcer-compose.ymlの中身
version: "3"
services:
app:
build:
context: .
dockerfile: docker/app/Dockerfile
ports:
- "50080:80"
volumes:
- ./src:/var/www/html
depends_on:
- db
db:
image: mysql:5.5.62
ports:
- "53306:3306"
volumes:
- ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf
- ./docker/db/mysql_data:/var/lib/mysql
env_file:
- ./docker/db/db-variables.env
//Dockfileの中身
# Heroku のデプロイ時に使用する Dockerfile
FROM php:7.4-apache
WORKDIR /var/www/html
# PHP で必要なライブラリをインストール
RUN apt-get update \
&& apt-get install -y libonig-dev libzip-dev unzip mariadb-client \
&& docker-php-ext-install pdo_mysql mysqli mbstring zip
# composer のインストール
COPY --from=composer:1.10 /usr/bin/composer /usr/bin/composer
ENV COMPOSER_ALLOW_SUPERUSER 1
# ファイルのコピー
COPY ./src /var/www/html
COPY ./docker/app/php.ini /usr/local/etc/php/php.ini
# Heroku で Apache2 が設定エラーになることへの対応
# https://github.com/docker-library/wordpress/issues/293
COPY ./docker/app/run-apache2.sh /usr/local/bin/
CMD [ "run-apache2.sh" ]
ここに問題・エラーに対して試したことを記載してください。
1.docker-compose.ymlでappのportsは50080:80になっているか
2. docker/app/Dockerfileでsrcディレクトリを/var/www/htmlにコピーしているか
3. Dockerfileでsrcディレクトリを/var/www/htmlにコピーしているか
4. Dockerのappというコンテナに入り、new.phpは「/var/www/html/companies/new.php」にあるか。
※new.phpは表示させたいファイルです。
5. appコンテナ内でApacheが起動しているか確認。
6. 念の為Apacheを再起動
7. appコンテナとdbコンテナが起動していることを確認
9. ここまでで下記は判明しております。
・Apacheは問題なく起動している
・(ログから)Apacheに通信が届いていない
10. src直下にファイル(src/index.php)を作成し、簡単な処理を実行。
<?php
echo 'hello';
10-1. コマンドでこちらは実行できることを確認済み
docker-compose exec app php index.php
10-2. Apache経由から実行できることを確認するが、ブラウザで次のURLにアクセスするが、「このサイトにアクセスできません」と表示される。
http://localhost:50080/index.php
http://127.0.0.0:50080/index.php
このような状況です。
長くなり申し訳ございませんが、大変困っております。
どうか助言頂けますと幸いです。
何か必要な情報があればお伝え致します。
いくつか画像で情報をアップ致しますのでご確認頂けますと幸いです。
★階層
★docker-compose.ymlの中身![68328.jpg]
★Dockerfileの中身
★docker/app/Dockerfileの中身![68452.jpg]
★ローカルPCのhostsの設定?
下記情報の追記になります。
・使用しているOSの情報:Windows10
・使用しているDockerのバージョン:v20.10.2
・使用しているDocker Composeのバージョン: 1.27.4,
・最後の「ローカルPCのhostsの設定?」で示しているファイルのフルパス
C:/Windows/System32/drivers/etc/hosts
★講座を進めている講師いわく
原因はApacheの設定かホストかポート、もしくはファイルパスのいずれかにあるはずなので、そこを一つずつ検証するのが遠回りなようで近道かと思いますとのことです。
勘でいくつか思いついたのでコメントします。
dockfileの「ファイルのコピー」次行。docker-composedeで共有してますし不要では?
また、上記ですがdockrfileの「ファイルのコピー」次行削除してみるといいのでしょうか?
Windows+WSL2+Dockerな環境ではないかと勝手に思っておりますが localhostForwarding の設定がされていないとかではないでしょうか。
参考になりそうな記事へのURLを貼っておきます。
https://qiita.com/snaka/items/a8eee4cfc8f7d733e6ab
https://qiita.com/v2okimochi/items/f53edcf79a4b71f519b1
とりあえず、何が問題なのか切り分けるために、今現在作業されているdocker-compose.ymlやDockerfileは全部なかったことにして、シンプルで余計な要素のないDockerfileでコンテナを作成して、親側(Windows)から子(Docker)に接続できるかどうかを確認されてはいかがでしょう。
自分の環境で動きましたのでお知らせです。
先述の箇所のコメントアウトしただけなので、
もしかしたら既存のコンテナor大本のdockerが原因かもです。。。
一回docker rmi コンテナした方が良いかもです。
一応貼っておきますね。
version: "3"
services:
app:
build:
context: .
dockerfile: ./Dockerfile
volumes:
- ./src:/var/www/html
ports:
- "50080:80"
mysql記述は検証に不要のため削除。
dockerfileの置き場所を一応相対指定に変更。
FROM php:7.4-apache
WORKDIR /var/www/html
# PHP で必要なライブラリをインストール
RUN apt-get update \
&& apt-get install -y libonig-dev libzip-dev unzip mariadb-client \
&& docker-php-ext-install pdo_mysql mysqli mbstring zip
# composer のインストール
COPY --from=composer:1.10 /usr/bin/composer /usr/bin/composer
ENV COMPOSER_ALLOW_SUPERUSER 1
# ファイルのコピー
# COPY ./src /var/www/html
# COPY ./docker/app/php.ini /usr/local/etc/php/php.ini
heroku設定は検証に不要なため削除。
ファイルのコピーは
/var/www/htmlはdocker-compose.ymlで書いているため不要、
php.iniは記述が不明なため一旦コメントアウト。
こちら、ある方に相談しまして解決致しました!
結論ポート番号が原因でした・・・
50080→8080に変えたところ成功しました。
何かPCに入っているアンチウィルスソフトとか、そういった類のソフトで何かポートが制限されているかもしれないそうです。
もしくは、DYNAMIC AND/OR PRIVATE PORTS
49152番~65535番が使えないかもしれないとの予想でした。
なにかわかる方がいればよろしくお願い致します。