![](/img/trans.png)
[英]Docker - Nginx, PHP, MongoDB - Laravel artisan migrate connection timeout
[英]Docker - Nginx, PHP, MySQL - Laravel artisan migrate connection refused
I have Laravel running in Docker with 3 containers - Nginx, MySQL 8 And PHP 8.
我有以下 docker-compose.yaml
version: '3.8'
services:
server:
build:
context: .
dockerfile: dockerfiles/nginx.dockerfile
ports:
- '8000:80'
volumes:
- ./src:/var/www/html
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro
container_name: server
depends_on:
- app
- db
app:
build:
context: .
dockerfile: dockerfiles/php.dockerfile
volumes:
- ./src:/var/www/html:delegated
container_name: app
db:
image: mysql:8.0
env_file:
- ./env/mysql.env
container_name: db
這個命令:
docker-compose up -d server
啟動 3 個容器:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5ff5cbefd12e toolkit_server "/docker-entrypoint.…" 9 seconds ago Up 3 seconds 0.0.0.0:8000->80/tcp server
c7f3c9753909 toolkit_app "docker-php-entrypoi…" 14 seconds ago Up 8 seconds 9000/tcp app
d7b421bd3c3b mysql:8.0 "docker-entrypoint.s…" 14 seconds ago Up 9 seconds 3306/tcp, 33060/tcp db
我想運行php artisan migrate
,所以我這樣嘗試:
docker-compose exec app php artisan migrate
這給了我以下錯誤:
Illuminate\Database\QueryException
SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = toolkit and table_name = migrations and table_type = 'BASE TABLE')
我的 mysql.env 文件是這樣的:
MYSQL_DATABASE=toolkit
MYSQL_USER=root
MYSQL_PASSWORD=password
MYSQL_ROOT_PASSWORD=password
AND.env:
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=toolkit
DB_USERNAME=root
DB_PASSWORD=password
我已經嘗試更改端口,主機,但我無法訪問 - 我一定在某個地方搞砸了。
請在docker-compose.yml
的app
部分嘗試此操作
links:
- db
在我匆忙中,我試圖在 mysql 准備好之前運行命令。 重建后容器可能需要 90 秒才能接受連接。
docker logs db
一旦准備好連接,我的命令就會運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.