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

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

詳細はこちら
docker-compose

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

MySQL

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

Laravel

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

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Docker

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

Q&A

1回答

6667閲覧

laravelでphp artisan migrateがエラーになる

退会済みユーザー

退会済みユーザー

総合スコア0

docker-compose

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

MySQL

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

Laravel

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

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Docker

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

0グッド

0クリップ

投稿2019/11/27 13:53

編集2019/11/27 23:40

VirtualBoxを使い、windows10 home上にlaravelの環境を構築しています。
laravelのコンテナに入り、php artisan migrateすると、以下のようなエラーが出ます。
イメージ説明

以下のことを試しましたが、どれも効果がありませんでした。

  • database.phpと.envファイルのlocalhostを127.0.0.1に変更
  • unix_socketにmysqld.sockのパスを追加

設定内容は以下です。
よろしくお願いします。

docker-compose.yml

yml

1version: '2' 2 3services: 4 laravel_mariadb: 5 container_name: laravel_mariadb 6 image: mariadb 7 ports: 8 - 3306:3306 9 volumes: 10 - ./docker/mariadbdata:/var/lib/mariadb 11 - ./initdb.d:/docker-entrypoint-initdb.d 12 environment: 13 - MYSQL_ROOT_PASSWORD=Password01 14 # command: "--innodb_use_native_aio=0" 15 laravel_phpmyadmin: 16 container_name: laravel_phpmyadmin 17 image: phpmyadmin/phpmyadmin 18 environment: 19 - PMA_ARBITRARY=1 20 - PMA_HOST=laravel_mariadb 21 - PMA_USER=root 22 - PMA_PASSWORD=Password01 23 links: 24 - laravel_mariadb 25 ports: 26 - 8088:80 27 volumes: 28 - ./docker/phpmyadmin/sessions:/sessions 29 laravel_php: 30 container_name: laravel_php 31 build: 32 context: . 33 dockerfile: dockerfile 34 volumes: 35 - ./php.ini:/usr/local/etc/php/php.ini 36 - ./docker/html:/var/www/html 37 links: 38 - laravel_mariadb 39 ports: 40 - 8089:80 41 42volumes: 43 mariadbdata: 44 driver: local

dockerfile

dockerfile

1FROM php:7.2-apache 2 3RUN apt-get update 4RUN apt-get install -y \ 5 zlib1g-dev \ 6 mariadb-client \ 7 libpng-dev \ 8 libjpeg-dev \ 9 gnupg curl wget 10RUN docker-php-ext-configure gd --with-png-dir=/usr/include --with-jpeg-dir=/usr/include 11RUN docker-php-ext-configure zip --without-libzip 12RUN docker-php-ext-install zip pdo_mysql gd 13 14# nodejs install 15RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - 16RUN apt-get install -y nodejs 17 18# composer install 19RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" 20RUN php -r "if (hash_file('SHA384', 'composer-setup.php') === '$(wget -q -O - https://composer.github.io/installer.sig)') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" 21RUN php composer-setup.php 22RUN php -r "unlink('composer-setup.php');" 23RUN mv composer.phar /usr/local/bin/composer 24 25ENV COMPOSER_ALLOW_SUPERUSER 1 26ENV COMPOSER_HOME /composer 27ENV PATH $PATH:/composer/vendor/bin 28 29WORKDIR /var/www/html/larasystem 30 31# laravel install 32RUN composer global require "laravel/installer" 33 34# laravelコマンドをどこからでも使用できるようにする 35ENV PATH "$PATH:$HOME/.composer/vendor/bin/" 36RUN echo $PATH 37 38# ドキュメントルートをlaravelのpublicに設定する 39COPY 000-default.conf /etc/apache2/sites-available/ 40 41# .htaccessでのリライト有効 42RUN cat /etc/apache2/mods-available/rewrite.load 43RUN a2enmod rewrite 44 45# apache再起動 46RUN /etc/init.d/apache2 restart 47 48# npm install 49RUN npm install --no-bin-links

database.php

php

1<?php 2 3use Illuminate\Support\Str; 4 5return [ 6 7 /* 8 |-------------------------------------------------------------------------- 9 | Default Database Connection Name 10 |-------------------------------------------------------------------------- 11 | 12 | Here you may specify which of the database connections below you wish 13 | to use as your default connection for all database work. Of course 14 | you may use many connections at once using the Database library. 15 | 16 */ 17 18 'default' => env('DB_CONNECTION', 'mysql'), 19 20 /* 21 |-------------------------------------------------------------------------- 22 | Database Connections 23 |-------------------------------------------------------------------------- 24 | 25 | Here are each of the database connections setup for your application. 26 | Of course, examples of configuring each database platform that is 27 | supported by Laravel is shown below to make development simple. 28 | 29 | 30 | All database work in Laravel is done through the PHP PDO facilities 31 | so make sure you have the driver for your particular database of 32 | choice installed on your machine before you begin development. 33 | 34 */ 35 36 'connections' => [ 37 38 'sqlite' => [ 39 'driver' => 'sqlite', 40 'url' => env('DATABASE_URL'), 41 'database' => env('DB_DATABASE', database_path('database.sqlite')), 42 'prefix' => '', 43 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), 44 ], 45 46 'mysql' => [ 47 'driver' => 'mysql', 48 'url' => env('DATABASE_URL'), 49 'host' => env('DB_HOST', 'localhost'), 50 'port' => env('DB_PORT', '3306'), 51 'database' => env('DB_DATABASE', 'laravel_app'), 52 'username' => env('DB_USERNAME', 'root'), 53 'password' => env('DB_PASSWORD', 'Password01'), 54 'unix_socket' => env('DB_SOCKET', '/var/run/mysqld/mysqld.sock'), 55 'charset' => 'utf8mb4', 56 'collation' => 'utf8mb4_general_ci', 57 'prefix' => '', 58 'prefix_indexes' => true, 59 'strict' => true, 60 'engine' => null, 61 'options' => extension_loaded('pdo_mysql') ? array_filter([ 62 PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), 63 ]) : [], 64 ], 65 66 'pgsql' => [ 67 'driver' => 'pgsql', 68 'url' => env('DATABASE_URL'), 69 'host' => env('DB_HOST', '127.0.0.1'), 70 'port' => env('DB_PORT', '5432'), 71 'database' => env('DB_DATABASE', 'forge'), 72 'username' => env('DB_USERNAME', 'forge'), 73 'password' => env('DB_PASSWORD', ''), 74 'charset' => 'utf8', 75 'prefix' => '', 76 'prefix_indexes' => true, 77 'schema' => 'public', 78 'sslmode' => 'prefer', 79 ], 80 81 'sqlsrv' => [ 82 'driver' => 'sqlsrv', 83 'url' => env('DATABASE_URL'), 84 'host' => env('DB_HOST', 'localhost'), 85 'port' => env('DB_PORT', '1433'), 86 'database' => env('DB_DATABASE', 'forge'), 87 'username' => env('DB_USERNAME', 'forge'), 88 'password' => env('DB_PASSWORD', ''), 89 'charset' => 'utf8', 90 'prefix' => '', 91 'prefix_indexes' => true, 92 ], 93 94 ], 95 96 /* 97 |-------------------------------------------------------------------------- 98 | Migration Repository Table 99 |-------------------------------------------------------------------------- 100 | 101 | This table keeps track of all the migrations that have already run for 102 | your application. Using this information, we can determine which of 103 | the migrations on disk haven't actually been run in the database. 104 | 105 */ 106 107 'migrations' => 'migrations', 108 109 /* 110 |-------------------------------------------------------------------------- 111 | Redis Databases 112 |-------------------------------------------------------------------------- 113 | 114 | Redis is an open source, fast, and advanced key-value store that also 115 | provides a richer body of commands than a typical key-value system 116 | such as APC or Memcached. Laravel makes it easy to dig right in. 117 | 118 */ 119 120 'redis' => [ 121 122 'client' => env('REDIS_CLIENT', 'phpredis'), 123 124 'options' => [ 125 'cluster' => env('REDIS_CLUSTER', 'redis'), 126 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), 127 ], 128 129 'default' => [ 130 'url' => env('REDIS_URL'), 131 'host' => env('REDIS_HOST', '127.0.0.1'), 132 'password' => env('REDIS_PASSWORD', null), 133 'port' => env('REDIS_PORT', 6379), 134 'database' => env('REDIS_DB', 0), 135 ], 136 137 'cache' => [ 138 'url' => env('REDIS_URL'), 139 'host' => env('REDIS_HOST', '127.0.0.1'), 140 'password' => env('REDIS_PASSWORD', null), 141 'port' => env('REDIS_PORT', 6379), 142 'database' => env('REDIS_CACHE_DB', 1), 143 ], 144 145 ], 146 147]; 148

.env

DB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=laravel_app DB_USERNAME=root DB_PASSWORD=Password01

バージョン

  • DockerToolbox 18.03.0-ce
  • Laravel 6.5.1
  • mysql Ver 15.1
  • PHP 7.2.24

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

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

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

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

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

m.ts10806

2019/11/27 14:03

それぞれのバージョンを明記してください
guest

回答1

0

.envの設定ですが、以下変更でいけませんか?

# ホストをDBコンテナ名に変更 DB_HOST=localhost ↓ DB_HOST=laravel_mariadb

投稿2019/11/28 01:44

meshi_s

総合スコア276

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

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

退会済みユーザー

退会済みユーザー

2019/11/28 13:24

やってみましたが同じエラーが出ました。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問