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

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

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

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

Laravel

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

Docker

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

Q&A

解決済

1回答

1840閲覧

Connection refusedエラーを解消したい

RuiShunsin

総合スコア4

MySQL

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

Laravel

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

Docker

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

0グッド

0クリップ

投稿2021/04/28 05:26

編集2021/04/28 05:39

前提・実現したいこと

docker+laravelで掲示板アプリの開発を行っています。
一旦完成したので、

gitにpushしたコードを実際に動かすことができるかをチェックするために、git cloneし、dockerの起動,db:seedを実行した際にエラーが発生しました。

エラーまでの手順
git clone
cd sample
docker-compose up -d
docker-compose exec php-fpm bash
php artisan db:seed

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

Illuminate\Database\QueryException : SQLSTATE[HY000] [2002] Connection refused (SQL: insert into `posts` (`created_at`, `updated_at`, `subject`, `message`, `name`, `user_id`) values (2021-03-28 10:22:09, 1981-07-21 09:37:14, 言いっぱい銀河鉄道線路せんのこ。, てあるんでしょに行くの音ねや草の中へくぐるまわりました。「ああ、そうでした。「今日きのどくがはれからぼうえて来てジョバンニが言いいねえ。ボスといっぱしから飛とんできて赤い腕木うでぎをした。ジョバンニは言いい顔のやぶのしく、頬ほおを吹ふいたのでした。「ああ、どからまあそうなすすみ。おかのシグナルの足をこす。どうして、前のあかは海にいるのでした。月のあの人たちは神かみさまざまにもひどくそくや否いなが。, 津田 直人, 4)) at /var/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php:669 665| // If an exception occurs when attempting to run a query, we'll format the error 666| // message to include the bindings with SQL, which will make this exception a 667| // lot more helpful to the developer instead of just the database's errors. 668| catch (Exception $e) { > 669| throw new QueryException( 670| $query, $this->prepareBindings($bindings), $e 671| ); 672| } 673| Exception trace: 1 PDOException::("SQLSTATE[HY000] [2002] Connection refused") /var/www/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70 2 PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=sample", "sample", "sample", []) /var/www/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70 Please use the argument -v to see more details.

該当のソースコード

sample/docker-compose.yml version: '3' services: nginx: image: nginx:1.17-alpine container_name: "sample_nginx" ports: - "8080:80" volumes: - ./src:/var/www - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf depends_on: - php-fpm php-fpm: build: ./docker/php image: "php-fpm:latest" container_name: "sample_php-fpm" volumes: - ./src:/var/www links: - db depends_on: - db db: image: mysql:8.0.18 container_name: "sample_db" volumes: - ./docker/mysql/conf.d:/etc/mysql/conf.d - ./docker/mysql/data:/var/lib/mysql ports: - 3306:3306 environment: MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} TZ: "Asia/Tokyo" command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
sample/src/.env.example sample/src/.env APP_NAME=Laravel APP_ENV=local APP_KEY= APP_DEBUG=true APP_URL=http://localhost LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD= BROADCAST_DRIVER=log CACHE_DRIVER=file QUEUE_CONNECTION=sync SESSION_DRIVER=file SESSION_LIFETIME=120 REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 MAIL_DRIVER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_DEFAULT_REGION=us-east-1 AWS_BUCKET= PUSHER_APP_ID= PUSHER_APP_KEY= PUSHER_APP_SECRET= PUSHER_APP_CLUSTER=mt1 MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

試したこと

docker用の.envファイルの設置ができていなかったことが原因ではないかと思い、docker-compose.ymlと同じ階層に.envファイルの設置を行いました。
ただ、エラーは解消されていない状況です。また、.envファイルが現在2つある状況なのですが、そちらもどのように対処すべきか分かりかねている状況になります。

sample/.env MYSQL_DATABASE=sample MYSQL_USER=sample MYSQL_PASSWORD=sampel MYSQL_ROOT_PASSWORD=root

どうぞよろしくお願い致します。

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

laravel6.5
mysql:8.0
ちなみに,docke+laravelの環境立ち上げは下記の記事を参考に行いました。
サイトURL

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

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

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

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

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

Lulucom

2021/04/28 08:00 編集

参考サイトの「3.2 .env」のところを正しく実施できていないためではないでしょうか。 Laravel用の.envファイルは.env.exampleファイルをコピーして作成し、.env.exampleファイルと同じ階層に置く必要があります。作成後に、docker-compose.ymlの内容に合わせてDB_XXX環境変数の値を変更すると書かれています。
RuiShunsin

2021/04/28 07:24

回答ありがとうございます! ちなみに、元々.env.exampleは.envで中身も参考サイトと同じように APP_NAME=Laravel APP_ENV=local APP_KEY=base64:0KrU6wJ5RiepU4gLjcZORcc6va8IYlg/4zQFEYgFBSs= APP_DEBUG=true APP_URL=http://localhost LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST=db DB_PORT=3306 DB_DATABASE=sample DB_USERNAME=sample DB_PASSWORD=sample BROADCAST_DRIVER=log CACHE_DRIVER=file QUEUE_CONNECTION=sync SESSION_DRIVER=file SESSION_LIFETIME=120 REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 MAIL_DRIVER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_DEFAULT_REGION=us-east-1 AWS_BUCKET= PUSHER_APP_ID= PUSHER_APP_KEY= PUSHER_APP_SECRET= PUSHER_APP_CLUSTER=mt1 MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" と記述していたのですが、gitにpushしたあと、cloneしたことで、.env.exampleに変わってしまいました。 これを防ぎたいのですが何か方法があるのでしょうか?
Lulucom

2021/04/28 07:36 編集

> gitにpushしたあと、cloneしたことで、.env.exampleに変わってしまいました これはそう見えただけで勘違いではないでしょうか。 Gitには、.env.exampleファイルは登録されていますが、.envファイルは登録されていないはずです。 同じ階層にある.gitignoreファイルの中に.envと書かれていると思います。Gitに無視させたいものが.gitignoreファイルに書かれています。.envファイルには公開するとまずい情報を書くことになりますので、Gitに登録されないように、そうなっています。
Lulucom

2021/04/28 07:42

> gitにpushしたあと、cloneした すみません、pushした後、ディレクトリごと消して、同じ場所にcloneした、という意味でしょうか。その場合は確かに.envファイルは消えてしまいます。
RuiShunsin

2021/04/28 07:46 編集

> すみません、pushした後、ディレクトリごと消して、同じ場所にcloneした、という意味でしょうか。 はい、その認識になります。 第三者がcloneしたとして、アプリの起動までできるかをテストしたいと考えております。
Lulucom

2021/04/28 07:51 編集

cloneした後、.env.exampleをコピーして.envを作成し、DB_XXX環境変数の値を書き換える必要があると思います。 .env.example内のDB_XXXの値を、docker-compose.ymlの内容に合わせておけば、コピーだけで済みそうですね。
RuiShunsin

2021/04/28 07:54

また新しく.envファイルを作成する必要があるということですね。ありがとうございます。 ちなみに、第三者でも扱えるようにしたいと考えているのですが、その場合、例えば、READ.MEにDB_XXX環境変数の値を記述することになるのでしょうか?
Lulucom

2021/04/28 07:59

すみません、.envファイルが2つあるのでしたね。 sample/.env (docker用) sample/src/.env (Laravel用) > READ.MEにDB_XXX環境変数の値を記述することになるのでしょうか? docker用の.envファイルの値はどうされていますか?同じ扱いで良いのかなと思います。
RuiShunsin

2021/04/28 08:06

> docker用の.envファイルの値はどうされていますか?同じ扱いで良いのかなと思います。 かしこまりました!ありがとうございます。 >すみません、.envファイルが2つあるのでしたね。 はい、2つあるということは、.env.exampleも2つ必要ということですよね? では手順としては 1.sample/.env example(docker用) sample/src/.env example(Laravel用) の2つを作成 2 push&clone 3.2つの.env exampleファイルから sample/.env (docker用) sample/src/.env (Laravel用) それぞれを作成する という認識で間違いないでしょうか?
Lulucom

2021/04/28 08:16 編集

Laravel用の.env.exampleは最初からあったと思います。 docker用の.env.exampleはまだ作成されてなかったのですね。必須とまでは言えませんが、作成しておくと親切かなと思います。 その手順で良いと思います。
RuiShunsin

2021/04/28 08:20

ありがとうございます!早速やってみます!
RuiShunsin

2021/04/28 08:22

Lulucomさんのおかげで 無事にアプリ起動できました!!ありがとうございます!!!!!
Lulucom

2021/04/28 08:24

よかったです^ ^
guest

回答1

0

ベストアンサー

参考サイトの「3.2 .env」のところを正しく実施できていないためではないでしょうか。

Laravelの.envファイルは.env.exampleファイルをコピーして作成し、.env.exampleファイルと同じ階層に置く必要があります。

投稿2021/04/28 08:23

Lulucom

総合スコア1899

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問