https://qiita.com/tatema/items/9a541553058fdd7fd6a7
Dockerの構成はこちらです。
プロジェクト名 ├── Docker/ │ ├── App/ │ │ ├ 000-default.conf │ │ ├ Dockerfile │ │ └ php.ini │ └── DB/ │ ├ my.cnf │ └ volume/ │ ├── src/ └── docker-compose.yml
上記の記事を見ながらDockerで環境構築をしたいと思っています。
上記の記事の手順通りLaravelのインストールの手順までは何も問題なく進むのですがLaravelインストール後の「DBの設定をし、接続する。」のコンテナに入りプロジェクトファイルに移動して「php artisan migrate」を実行しようとしたところ
Illuminate\Database\QueryException : SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = laravel and table_name = migrations and table_type = 'BASE TABLE') at /var/www/html/okodukaiapp/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/html/okodukaiapp/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70 2 PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=laravel", "root", "", []) /var/www/html/okodukaiapp/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70 Please use the argument -v to see more details.
上記のようなエラーが出て実行することができません。
試したこと
実行がうまくいかなったため一度MySQLサーバに入ろうとためしコンテナ内に入り
mysql -uroot -p
と実行したところ
bash: mysql: command not found
なってしまい実行することができませんでした。
コマンドが見つからないということはMySQLがうまく導入できていないということでしょうか?
初心者のためご教授いただけると幸いです。
使用しているファイル等を記載しておきます。
↓docker-compose.ymlファイル
# docker-composeで使用するバージョンを定義しています。 version: '3' # アプリケーションを動かすための各要素のこと。servicesの中に、app、db、phpmyadminが子要素として設定されています。 services: # laravelを動かすコンテナがここから下に記載されています。 app: #コンテナの名前をここで決めます。 container_name: okodukai_app # どのポートを繋ぐかという設定です。ホストの8080番ポートとコンテナの80番をつないでいる。80番ポートのバーチャルホストは000-default.confにて設定済みです。 ports: - "8000:80" # Dockerfileの設定の場所を指定しています。Dockerfileの内容に基づいてビルドします。 build: ./Docker/App # コンテナとホスト側のディレクトリを同期する場所をここで指定しています。ここにlaravelのソースが入ります。 volumes: - ./src:/var/www/html # MySQLを動かすコンテナがここから設定されています。 db: #Docker HubからMySQL5.7の公式イメージを引っ張ってくる設定です。 image: mysql:5.7 # コンテナ名を指定しています。 container_name: okodukai_db # MySQLのコンテナ内の環境変数を指定しています。任意のものを設定してください。 environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: okodukai_db MYSQL_USER: dbuser MYSQL_PASSWORD: dbpass TZ: 'Asia/Tokyo' # 起動時のコマンドになります。 command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci # ディレクトリの同期をしています。ここを書かないとコンテナを閉じたときにデータベースからデータがなくなるので注意してください。詳しくはdocker 永続化などと調べると良いかもです。 volumes: - ./Docker/DB/volume:/var/lib/mysql - ./Docker/DB/my.cnf:/etc/mysql/conf.d/my.cnf # ホストの13306番ポートとコンテナのなかの3306番ポートとつなげる設定です。 ports: - 13306:3306 # phpmyadminの設定が書きに記載します。 phpmyadmin: #コンテナ名を決めています。 container_name: phpmyadmin #DockerHubからphpmyadminのイメージを引っ張ってくる設定です。 image: phpmyadmin/phpmyadmin #phpmyadminの環境変数の設定です。MySQLの設定を参照して記載してください。PMA_HOSTSにはservicesのdbを指定しています。 environment: - PMA_ARBITRARY=1 - PMA_HOSTS=db - PMA_USER=root - PMA_PASSWORD=root ports: - 3000:80
↓Dockerfile
FROM php:7.4-apache ADD php.ini /usr/local/etc/php/ ADD 000-default.conf /etc/apache2/sites-enabled/ RUN cd /usr/bin && curl -s http://getcomposer.org/installer | php && ln -s /usr/bin/composer.phar /usr/bin/composer RUN apt-get update \ && apt-get install -y \ git \ zip \ unzip \ vim \ libpng-dev \ libpq-dev \ && docker-php-ext-install pdo_mysql RUN mv /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled RUN /bin/sh -c a2enmod rewrite
↓000-default.conf
<VirtualHost *:80> ServerAdmin laravel@localhost DocumentRoot /var/www/html/okodukaiapp/public ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/html/okodukaiapp/public> AllowOverride All </Directory> </VirtualHost>
↓php.ini
[Date] date.timezone = "Asia/Tokyo" [mbstring] default_charset = "UTF-8" mbstring.language = "Japanese"
↓my.cnf
[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci [client] default-character-set=utf8mb4
追記
Laravelのenvファイルを変更していなかったため、docker-compose.ymlで定義した名に変更してもう一度
php artisan migrate
を実行しましたが上記と同じエラーが表示されて実行することはできませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。