簡體   English   中英

Docker - Nginx, PHP, MySQL - Laravel artisan migrate connection refused

[英]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.ymlapp部分嘗試此操作

links:
    - db

在我匆忙中,我試圖在 mysql 准備好之前運行命令。 重建后容器可能需要 90 秒才能接受連接。

docker logs db

一旦准備好連接,我的命令就會運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM