【问题标题】:SQLSTATE[HY000] [2002] Connection refused error when running php artisan migrateSQLSTATE[HY000] [2002] 运行 php artisan migrate 时连接被拒绝错误
【发布时间】:2021-11-24 13:35:52
【问题描述】:

之前有人问过这个问题,我已经尝试了解决方案,但没有一个适合我。如果有人可以帮助我,我将不胜感激。

我正在使用 Docker 设置 Laravel 8 应用程序。一切正常,除非我尝试运行 php artisan migrate 我收到此错误

以下是配置文件: docker-compose.yml

version: "3.7"

services:
  #Laravel App
    app:
      build:
        args:
          user: myuser
          uid: 501
        context: ./
        dockerfile: Dockerfile
      image: laravel-app
      restart: always
      container_name: laravel
      working_dir: /var/www/application/
      environment:
        XDEBUG_CONFIG: client_host=docker.for.mac.host.internal discover_client_host=true
        PHP_IDE_CONFIG: serverName=${SERVER_NAME}
      volumes:
        - ./application/:/var/www/application
      networks:
        - mynetwork

   #Nginx Service
    nginx:
      image: nginx:alpine
      container_name: nginx
      restart: always
      ports:
        - "8000:80"
      volumes:
        - ./:/var/www
        - ./nginx/conf.d:/etc/nginx/conf.d/
      networks:
        - mynetwork
      external_links:
        - mysql:mysql
        - phpmyadmin:phpmyadmin

  #Mysql Service
    mysql:
      image: mariadb:latest
      container_name: mysql
      restart: always
      environment:
        MYSQL_DATABASE: laraveldb
        MYSQL_ROOT_PASSWORD: laravelpassworddb
        MYSQL_PASSWORD: laravelpassworddb
        MYSQL_USER: laravel
      networks:
        - mynetwork
      volumes:
        - "./mariadb/:/var/lib/mysql"
      ports:
        - "8889:3306"

  # PHPMYADMIN service
    phpmyadmin:
      image: phpmyadmin/phpmyadmin:latest
      container_name: phpmyadmin
      environment:
        - "PMA_HOST=mysql"
        - "PMA_PORT=3306"
      external_links:
        - mysql:mysql
      volumes:
        - "./phpmyadmin/sessions:/sessions"
      ports:
        - "8081:80"
      restart: always
      networks:
        - mynetwork

networks:
  mynetwork:
    driver: bridge

.env

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laraveldb
DB_USERNAME=laravel
DB_PASSWORD=laravelpassworddb
#
SERVER_NAME=LaravelXdebug

dockerfile

FROM php:7.4-fpm

# Arguments defined in docker-compose.yml
ARG user
ARG uid

# Install system dependencies
RUN apt-get update && apt-get install -y \
    git \
    curl \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    unzip \
    vim \
    sudo \
    netcat

# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd

# Install Xdebug
RUN pecl install xdebug \
    && echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && docker-php-ext-enable xdebug

# Get latest Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Create system user to run Composer and Artisan Commands
RUN useradd -r -G www-data,root -u $uid -d /home/$user $user
RUN mkdir -p /home/$user/.composer && \
    chown -R $user:$user /home/$user

# Set working directory
WORKDIR /var/www

USER $user

laravel.conf

server {
    listen 80;
    index index.php index.html;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/application/public;
    location ~ \.php$ {
        try_files $uri =404;
        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;
    }
    location / {
        try_files $uri $uri/ /index.php?$query_string;
        gzip_static on;
    }
}

我已尝试测试连接,它似乎可以正常工作

【问题讨论】:

标签: php mysql laravel docker docker-compose


【解决方案1】:

原来我的 .env 文件的路径不正确。它正在从默认的 laravel_application/.env 文件中加载值。

遇到这个问题的任何人,。 您可以在方法createPdoConnection() 方法中var_dump()laraval_docker/application/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php 中的连接凭据。 因此,确定它正在使用的主机、用户名和密码,并验证是否加载了正确的主机。我花了很多时间看其他东西。

不要忘记删除调试,谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 2018-11-12
    • 1970-01-01
    • 2021-07-10
    • 2013-11-06
    • 1970-01-01
    • 2017-05-04
    • 2020-01-22
    相关资源
    最近更新 更多