简体   繁体   English

SQLSTATE[HY000] [2002] 尝试 Dockerize Laravel 应用程序时连接被拒绝

[英]SQLSTATE[HY000] [2002] Connection refused when trying to Dockerize Laravel App

I was able to access the mysql database from phpmyadmin using user: admin and password: root and the url: 127.0.0.1:3310 and I was able to load the website on 127.0.0.1:8008 but when i try to login or interact with the database i get the error below:我能够使用用户:admin密码:rooturl:127.0.0.1:3310phpmyadmin访问mysql 数据库,并且我能够在127.0.0.1:8008上加载网站,但是当我尝试登录或与之交互时数据库我收到以下错误:

SQLSTATE[HY000] [2002] Connection refused select * from users where email = boyiajas@gmail.com limit 1 SQLSTATE[HY000] [2002] Connection denied select * from users where email = boyiajas@gmail.com limit 1

and I also try to do a migration from within the app docker container but failed as well我也尝试从应用程序 docker 容器中进行迁移,但也失败了

root@58a709f18668:/var/www/html# php artisan migrate

   Illuminate\Database\QueryException 

  SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = laravelvueblog_db and table_name = migrations and table_type = 'BASE TABLE')

below is my .env file下面是我的.env文件

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3309
DB_DATABASE=laravelvueblog_db
DB_USERNAME=admin
DB_PASSWORD=root

below is my vhost.conf file下面是我的vhost.conf文件

<VirtualHost *:8008>
    DocumentRoot /var/www/html/public

    <Directory "/var/www/html/public">
        AllowOverride all
        Require all granted
    </Directory>

    #ErrorLog ${APACHE_LOG_DIR}/error.log
    #CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

below is my Docker file下面是我的Docker 文件

FROM php:8-apache

USER root
RUN apt-get update -y && apt-get install -y openssl curl zip unzip git nano
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-install mysqli pdo pdo_mysql opcache
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

WORKDIR /app
COPY . /app
COPY vhost.conf /etc/apache2/sites-available/000-default.conf

RUN chown -R www-data:www-data /app && a2enmod rewrite
RUN rm -rf /var/www/html && ln -s /app /var/www/html
RUN composer install
RUN php artisan optimize:clear

CMD php artisan serve --host=0.0.0.0 --port=8000
EXPOSE 8000

below is my docker-compose.yaml file下面是我的 docker-compose.yaml 文件

version: '3.8'
services: 
    db:
        image: mariadb:latest
        container_name: db
        ports:
            - 3309:3306
        environment:
            MYSQL_DATABASE: laravelvueblog_db
            MYSQL_ROOT_PASSWORD: root
            MYSQL_PASSWORD: root
            MYSQL_USER: admin            
        volumes:
            - mysql_file:/docker-entrypoint-initdb.d
        networks:
            - appnetwork
    main:
        build: 
            context: .
            dockerfile: Dockerfile
        volumes:
            - .:/app
        ports:
            - 8008:8000
        environment:
            # MYSQL_DATABASE: laravelvueblog_db
            # MYSQL_ROOT_PASSWORD: root
            # MYSQL_PASSWORD: root
            # MYSQL_USER: admin
            DB_HOST: db
            DB_USER: admin
            DB_PASSWORD: root
            DB_NAME: laravelvueblog_db
            WAIT_HOSTS: db:3306

        depends_on:
            - db
        links:
            - db
        networks:
            - appnetwork

    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        ports:
            - 3310:80
         links:
            - mysql
        environment:
            PMA_HOSTS: db
            PMA_PORT: 3306
        depends_on:
            - db
        networks:
            - appnetwork
 volumes:
     mysql_file:
         driver: local
 networks:
     appnetwork:
         driver: bridge

After several attempt I found the problem, since all the services are on the same network ( appnework )经过几次尝试,我发现了问题,因为所有服务都在同一个网络上( appnework

I used the internal port in my laravel .env file like below我在我的 laravel .env 文件中使用了内部端口,如下所示

DB_PORT=3306

And now it works fine现在它工作正常

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM