docker中的Laravel应用程序未连接到数据库
我用phpmyadmin在docker中安装了laravel 5.8应用程序,并用url I输入phpmyadmin 已经创建了DockerVotes mysql数据库 但进入运行seed的web时,我遇到错误连接被拒绝docker中的Laravel应用程序未连接到数据库,laravel,docker,Laravel,Docker,我用phpmyadmin在docker中安装了laravel 5.8应用程序,并用url I输入phpmyadmin 已经创建了DockerVotes mysql数据库 但进入运行seed的web时,我遇到错误连接被拒绝 # php artisan config:cache Configuration cache cleared! Configuration cached successfully! root@caec409189c9:/var/www/html# php artisan mig
# php artisan config:cache
Configuration cache cleared!
Configuration cached successfully!
root@caec409189c9:/var/www/html# php artisan migrate:refresh --seed
Illuminate\Database\QueryException : SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = DockerVotes and table_name = vt2_migrations and table_type = 'BASE TABLE')
at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664
...
My docker-compose.yml:
version: '3.1'
services:
web:
build:
context: ./web
dockerfile: Dockerfile.yml
environment:
- APACHE_RUN_USER=www-data
volumes:
- ${APP_PATH_HOST}:${APP_PTH_CONTAINER}
ports:
- 8081:80
working_dir: ${APP_PTH_CONTAINER}
db: // Database container
image: mysql:5.7.24
restart: always
environment:
MYSQL_ROOT_PASSWORD: 1
volumes:
- ${DB_PATH_HOST}:/var/lib/mysql
phpmyadmin:
depends_on:
- db
image: phpmyadmin/phpmyadmin
restart: always
ports:
- 8082:80
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: 1
composer:
image: composer:1.8
volumes:
- ${APP_PATH_HOST}:${APP_PTH_CONTAINER}
working_dir: ${APP_PTH_CONTAINER}
command: composer install --ignore-platform-reqs
和laravel的应用程序vows/.env:
DB_USERNAME=root
DB_PASSWORD=1
DB_CONNECTION=mysql
DB_HOST=db // Link to db container in docker-compose.yml
DB_PORT=3036
DB_DATABASE=DockerVotes
我还有:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6ce5f254440b phpmyadmin/phpmyadmin "/docker-entrypoint.���" 9 minutes ago Up 9 minutes 0.0.0.0:8082->80/tcp votesdocker_phpmyadmin_1
b9a55af8f6fb votesdocker_web "docker-php-entrypoi���" 9 minutes ago Up 9 minutes 0.0.0.0:8081->80/tcp votesdocker_web_1
fe5c844fb5c7 mysql:5.7.24 "docker-entrypoint.s���" 9 minutes ago Up 9 minutes 3306/tcp, 33060/tcp votesdocker_db_1
建筑项目我在末尾有输出:
...
---> faafdc26d9a3
Successfully built faafdc26d9a3
Successfully tagged votesdocker_web:latest
Creating votesdocker_web_1 ...
Creating votesdocker_db_1 ...
Creating votesdocker_composer_1 ...
Creating votesdocker_db_1
Creating votesdocker_composer_1
Creating votesdocker_db_1 ... done
Creating votesdocker_phpmyadmin_1 ...
Creating votesdocker_phpmyadmin_1 ... done
$ docker logs --tail=20 votesdocker_db_1
2019-10-20T11:14:20.658357Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them.
2019-10-20T11:14:20.710682Z 0 [Note] InnoDB: Buffer pool(s) load completed at 191020 11:14:20
2019-10-20T11:14:20.806001Z 0 [Warning] CA certificate ca.pem is self signed.
2019-10-20T11:14:20.822750Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
2019-10-20T11:14:20.823404Z 0 [Note] IPv6 is available.
2019-10-20T11:14:20.823422Z 0 [Note] - '::' resolves to '::';
2019-10-20T11:14:20.823448Z 0 [Note] Server socket created on IP: '::'.
2019-10-20T11:14:20.838582Z 0 [Warning] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
2019-10-20T11:14:22.710360Z 0 [Warning] 'user' entry 'root@localhost' ignored in --skip-name-resolve mode.
2019-10-20T11:14:22.734817Z 0 [Warning] 'user' entry 'mysql.session@localhost' ignored in --skip-name-resolve mode.
2019-10-20T11:14:22.734833Z 0 [Warning] 'user' entry 'mysql.sys@localhost' ignored in --skip-name-resolve mode.
2019-10-20T11:14:22.764949Z 0 [Warning] 'db' entry 'performance_schema mysql.session@localhost' ignored in --skip-name-resolve mode.
2019-10-20T11:14:22.764978Z 0 [Warning] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode.
2019-10-20T11:14:22.776582Z 0 [Warning] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode.
2019-10-20T11:14:26.296765Z 0 [Warning] 'tables_priv' entry 'user mysql.session@localhost' ignored in --skip-name-resolve mode.
2019-10-20T11:14:26.422170Z 0 [Warning] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode.
2019-10-20T11:14:30.169912Z 0 [Note] Event Scheduler: Loaded 0 events
2019-10-20T11:14:30.198279Z 0 [Note] mysqld: ready for connections.
Version: '5.7.24' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)
2019-10-20T11:14:42.680171Z 0 [Note] InnoDB: page_cleaner: 1000ms intended loop took 4111ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)
我的laravel应用程序无法连接到mysql数据库,这在我的配置中有什么问题?通常mysql端口号是3306,而不是3036;这是问题中的打字错误还是你的申请?错误消息是否包含尝试连接位置的详细信息?您甚至可以在日志中看到db正在侦听端口
3306
,但您正在尝试连接到3036
。