【问题标题】:How to fix 'SQLSTATE[HY000] [2002] Connection refused' error in laravel (artisan migrate in docker)如何修复 laravel 中的“SQLSTATE [HY000] [2002] 连接被拒绝”错误(docker 中的工匠迁移)
【发布时间】:2019-07-09 13:23:19
【问题描述】:

当我尝试在 docker 文件中添加命令php artisan migrate 时,出现错误:

SQLSTATE[HY000] [2002] 连接被拒绝(SQL: select * from information_schema.tables where table_schema = vacancylist and table_name = migrations)

Dockerfile

FROM php:7.2.10-fpm
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
RUN apt-get update -y && apt-get install -y \
build-essential \
mysql-client \
libpng-dev \
libjpeg62-turbo-dev \
libfreetype6-dev \
locales \
zip \
jpegoptim optipng pngquant gifsicle \
vim \
unzip \
git \
curl
RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl
RUN docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/
RUN docker-php-ext-install gd
WORKDIR /app
COPY . /app
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN composer install
RUN php artisan migrate
CMD php artisan serve --host=0.0.0.0 --port=80

docker-compose.yml

version: '2'
services:
  app:
    build: .
    ports:
      - "8000:80"
    volumes:
      - .:/app
    env_file: .env
    working_dir: /app
#    command: bash -c 'php artisan migrate && php artisan serve --host 0.0.0.0'
    depends_on:
      - db
    links:
      - db
  db:
    image: "mysql:5.7.25"
    environment:
      - MYSQL_ROOT_PASSWORD=newrootpassword
      - MYSQL_DATABASE=vacancylist
      - MYSQL_USER=root
      - MYSQL_PASSWORD=newrootpassword
      - MYSQL_ALLOW_EMPTY_PASSWORD=true
    volumes:
      - ./data/:/var/lib/mysql
    ports:
      - "3306:3306"

.env

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=vacancylist
DB_USERNAME=root
DB_PASSWORD=newrootpassword

【问题讨论】:

    标签: laravel docker docker-compose


    【解决方案1】:

    您的所有配置看起来都正确。我要解决的一件事是删除 links 部分 - 它是 obsolete 并且不再推荐使用。

    我建议与php 相比,数据库启动需要更多时间,这就是你的问题。 depends_on 部分没有解决这个问题 - 它只控制启动顺序。尝试在 php 中添加一点暂停或使用 wait-for-it 工具包 - 它是专门为这种情况设计的:它一直等到主机/端口可用。

    【讨论】:

      猜你喜欢
      • 2020-04-10
      • 2022-10-20
      • 1970-01-01
      • 2019-07-18
      • 2017-05-04
      • 2022-10-25
      • 2021-12-17
      • 1970-01-01
      • 2017-09-20
      相关资源
      最近更新 更多