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

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

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

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

Laravel 6

Laravel 6は、オープンソースなPHPのフレームワーク。Webアプリケーションの開発に適しており、バージョン6はLTSです。5.8での向上に加えて、セマンティックバージョニングの採用やLaravel Vaporとのコンパチビリティなどが変更されています。

MySQL

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

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Docker

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

Q&A

0回答

720閲覧

Laravel + MySQL + Apache + Docker で SQLSTATE[HY000] [2002] No such file or directory というエラーになる

STC-H.M

総合スコア6

docker-compose

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

Laravel 6

Laravel 6は、オープンソースなPHPのフレームワーク。Webアプリケーションの開発に適しており、バージョン6はLTSです。5.8での向上に加えて、セマンティックバージョニングの採用やLaravel Vaporとのコンパチビリティなどが変更されています。

MySQL

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

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Docker

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

0グッド

0クリップ

投稿2022/12/19 10:17

前提

Laravel + MySQL + Docker の環境構築を行っています。

既にLaravel で作り上げたアプリがあり、その開発環境を dockerに移行することが目的です。

実現したいこと

作成済みのアプリをdocker環境で動作させたいです。

細かい機能の動作はおいておいて、リクエストに対してレスポンスを返すようにするのが一先ずの実現したいことです。

用いているソースコード

ディレクトリ構成は以下です。

  • docker
    • app
      • Dockerfile
    • db
  • docker-compose.yml
  • public
  • system
    • app
    • bootstrap
    • config
    • database
    • resources
    • routes
    • storage
    • tests
    • vendor
    • .env

関連がありそうなファイルの具体的な内容は以下になります。

  • .env
DB_CONNECTION=mysql DB_HOST=db DB_DATABASE=laravel_DB DB_USERNAME=laravel_USER DB_PASSWORD=laravel_PASSWORD MYSQL_ROOT_PASSWORD=ROOT_PASSWORD
  • docker/app/Dockerfile
FROM registry.access.redhat.com/ubi8/ubi:8.6 # ツール類のインストール RUN yum install -y \ less \ procps \ wget # Install Apache RUN yum install -y httpd # Install PHP RUN yum module install -y php:7.2 RUN yum install -y php-pdo php-gd php-ldap php-mysqli php-posix RUN yum install -y systemd
  • docker-compose.yml
version: '3' services: app: container_name: app build: context: ./docker/app dockerfile: Dockerfile ports: - "81:80" volumes: - type: bind source: './public' target: '/var/www/html/public' - type: bind source: './system' target: '/var/www/html/system' tty: true command: /sbin/init privileged: true networks: - network depends_on: - db db: image: mysql:5.7 container_name: db env_file: - ./system/.env networks: - network networks: network:
  • config/database.php
<?php return [ /* |-------------------------------------------------------------------------- | Default Database Connection Name |-------------------------------------------------------------------------- | | Here you may specify which of the database connections below you wish | to use as your default connection for all database work. Of course | you may use many connections at once using the Database library. | */ 'default' => env('DB_CONNECTION', 'mysql'), /* |-------------------------------------------------------------------------- | Database Connections |-------------------------------------------------------------------------- | | Here are each of the database connections setup for your application. | Of course, examples of configuring each database platform that is | supported by Laravel is shown below to make development simple. | | | All database work in Laravel is done through the PHP PDO facilities | so make sure you have the driver for your particular database of | choice installed on your machine before you begin development. | */ 'connections' => [ 'sqlite' => [ 'driver' => 'sqlite', 'database' => env('DB_DATABASE', database_path('database.sqlite')), 'prefix' => '', ], 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'laravel_DB'), 'username' => env('DB_USERNAME', 'laravel_USER'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_bin', 'prefix' => '', 'strict' => false, 'engine' => null, 'options' => [ PDO::ATTR_EMULATE_PREPARES => true, PDO::MYSQL_ATTR_LOCAL_INFILE => true, ], ], 'pgsql' => [ 'driver' => 'pgsql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '5432'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', 'schema' => 'public', 'sslmode' => 'prefer', ], 'sqlsrv' => [ 'driver' => 'sqlsrv', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '1433'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', ], ], /* |-------------------------------------------------------------------------- | Migration Repository Table |-------------------------------------------------------------------------- | | This table keeps track of all the migrations that have already run for | your application. Using this information, we can determine which of | the migrations on disk haven't actually been run in the database. | */ 'migrations' => 'migrations', /* |-------------------------------------------------------------------------- | Redis Databases |-------------------------------------------------------------------------- | | Redis is an open source, fast, and advanced key-value store that also | provides a richer set of commands than a typical key-value systems | such as APC or Memcached. Laravel makes it easy to dig right in. | */ 'redis' => [ 'client' => 'predis', 'default' => [ 'host' => env('REDIS_HOST', '127.0.0.1'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', 6379), 'database' => 0, ], ], ];

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

どこのページにアクセスしても、以下のようなエラーになります。

SQLSTATE[HY000] [2002] No such file or directory

該当のエラーで検索をかけた所、コンテナ間の接続が上手くいっていない可能性が高いことはわかったのですが、検索結果にあった解決策を一通り試しても解決が出来ていない状態です。

どのように原因を切り分けて行ってよいかわからないため、調べる箇所と方法をご教示いただきたいです。

試したこと

  • .env ファイルに誤りがないか確認

DB_HOSTの指定を 127.0.0.0、localhost、db(DBコンテナの名称)としてみましたが、いずれもエラー変わらずでした

  • config/database.php に誤りがないか確認

こちらも意図通りでした。

  • DBコンテナ内でDBに接続できるか確認

mysql コマンドをたたいた所、問題なく入れました。

  • DBコンテナ内でmysqldが立ち上がっているか確認

ps aux | grep mysqld とした所、以下のような出力が返ってきたため、問題なく動作しているように見受けられました。

mysql 1 0.3 7.0 1490960 275732 ? Ssl 08:12 0:18 mysqld root 396 0.0 0.0 9104 876 pts/0 S+ 09:52 0:00 grep mysqld
  • appコンテナにて php artisan migrate:status を実行する

こちらは SQLSTATE[HY000] [2002] No such file or directory というエラーを吐いて実行できませんでした。

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

開発環境は Windows のWSL2で行っています。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問