dockerでmysqlをコンテナ間で疎通できません。
dockerで作成したappコンテナ内のlaravelフォルダでphp artisan migrateを実行すると下記のようなエラーが発生します。
root@4177ab34c56f:/var/www/html/test_app# php artisan migrate Illuminate\Database\QueryException SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from information_schema.tables where table_schema = test_app and table_name = migrations and table_type = 'BASE TABLE') at vendor/laravel/framework/src/Illuminate/Database/Connection.php:671 667| // If an exception occurs when attempting to run a query, we'll format the error 668| // message to include the bindings with SQL, which will make this exception a 669| // lot more helpful to the developer instead of just the database's errors. 670| catch (Exception $e) { > 671| throw new QueryException( 672| $query, $this->prepareBindings($bindings), $e 673| ); 674| } 675| +34 vendor frames 35 artisan:37 Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
最初はlarvel側の.envやconfig/database.phpの設定の問題かと思案しましたが、appコンテナ側からmysqlコンテナに接続できないのでそもぞもdockerの接続方法に問題があるのかと思います。ちなみにmysqlコンテナで
mysql -u test -p
を実行すると問題なくdbにアクセスできます。
dockerに詳しかた、ぜひご教示ください。ヒントだけでも構いません。
ファイル構造
test_app - docker-compose.yml - docker/ - php/ - dockerfile - web/ - default.conf - publics/
docker-compose.yml
version: '3' services: web: image: nginx:1.15.6 ports: - '8085:80' depends_on: - app volumes: - ./docker/web/default.conf:/etc/nginx/conf.d/default.conf - ./publics/:/var/www/html networks: - app-net app: build: ./docker/php volumes: - ./publics/:/var/www/html depends_on: - mysql networks: - app-net mysql: container_name: mysql image: mysql:5.7 environment: MYSQL_DATABASE: test_app MYSQL_USER: test MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: password ports: - "3306:3306" volumes: - mysql-data:/var/lib/mysql networks: - app-net volumes: mysql-data: networks: app-net: driver: bridge
./docker/php/dockerfile
FROM php:7.2-fpm 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 RUN apt-get update \ && apt-get install -y libpq-dev \ && docker-php-ext-install pdo_mysql pdo_pgsql WORKDIR /var/www/html
./docker/web/default.conf
server { listen 80; root /var/www/html/test_app/public; index index.php index.html index.htm; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ .php$ { fastcgi_split_path_info ^(.+.php)(/.+)$; fastcgi_pass app:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } }
もろもろの環境
Docker version 19.03.8
docker-compose version 1.25.5
Laravel Framework 7.14.1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。