Laravel 未连接到 Windows 上的 Docker/docker-compose 上的数据库

Wai Yan Hein

我正在使用 Docker 进行 Laravel 项目。以下是我docker-compose.yml用于开发环境的文件。

 version: '3'
  services:
    apache:
      container_name: pathien_apache
      image: webdevops/apache:ubuntu-16.04
      environment:
        WEB_DOCUMENT_ROOT: /var/www/public
        WEB_ALIAS_DOMAIN: pathien.localhost
        WEB_PHP_SOCKET: php-fpm:9000
      volumes: # Only shared dirs to apache (to be served)
        - ./public:/var/www/public:cached
        - ./storage:/var/www/storage:cached
      networks:
        - pathien-network
      ports:
        - "8081:80"
        - "443:443"
    php-fpm:
      container_name: pathien_php
      image: jguyomard/laravel-php:7.3
      volumes:
        - ./:/var/www/
        - ./ci:/var/www/ci:cached
        - ./vendor:/var/www/vendor:delegated
        - ./storage:/var/www/storage:delegated
        - ./node_modules:/var/www/node_modules:cached
        - ~/.ssh:/root/.ssh:cached
        - ./composer.json:/var/www/composer.json
        - ./composer.json:/var/www/composer.lock
        - ~/.composer/cache:/root/.composer/cache:delegated
      links:
        - es01
      networks:
        - pathien-network
    db:
      container_name: pathien_db
      image: mariadb:10.2
      environment:
        MYSQL_ROOT_PASSWORD: root
        MYSQL_DATABASE: pathien
        MYSQL_USER: pathien
        MYSQL_PASSWORD: secret
      volumes:
        - pathien-data:/var/lib/mysql
      networks:
        - pathien-network
      ports:
        - "33060:3306"
    es01:
      image: docker.elastic.co/elasticsearch/elasticsearch:7.6.1
      container_name: es01
      environment:
        - node.name=es01
        - cluster.name=es-docker-cluster
        - cluster.initial_master_nodes=es01
        - bootstrap.memory_lock=true
        - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      ulimits:
        memlock:
          soft: -1
          hard: -1
      volumes:
        - es-data:/usr/share/elasticsearch/data
      ports:
        - 9200:9200
      networks:
        - pathien-network
    kibana:
      image: docker.elastic.co/kibana/kibana:7.6.1
      container_name: pathien_kibana
      environment:
        - ./kibana.yml:/usr/share/kibana/config/kibana.yml
      ports:
        - "5601:5601"
      networks:
        - pathien-network
  networks:
    pathien-network:
      driver: "bridge"
  volumes:
    pathien-data:
      driver: "local"
    es-data:
      driver: "local"

如您所见,我有一个容器名称为 的数据库映像pathein_db我正在尝试从 Laravel 应用程序连接它,在.env文件中设置凭据,如下所示。

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=pathein
DB_USERNAME=pathein
DB_PASSWORD=secret 

然后我尝试运行迁移命令

$ docker-compose exec php-fpm php artisan migrate

但出现以下错误:

   Illuminate\Database\QueryException  : SQLSTATE[HY000] [1045] Access denied for user 'pathein'@'172.21.0.6' (using password: YES) (SQL: SHOW FULL TABLES WHERE table_type = 'BASE TABLE')

  at /var/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php:669
    665|         // If an exception occurs when attempting to run a query, we'll format the error
    666|         // message to include the bindings with SQL, which will make this exception a
    667|         // lot more helpful to the developer instead of just the database's errors.
    668|         catch (Exception $e) {
  > 669|             throw new QueryException(
    670|                 $query, $this->prepareBindings($bindings), $e
    671|             );
    672|         }
    673| 

  Exception trace:

  1   PDOException::("SQLSTATE[HY000] [1045] Access denied for user 'pathein'@'172.21.0.6' (using password: YES)")
      /var/www/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  2   PDO::__construct("mysql:host=db;port=3306;dbname=pathein", "pathein", "secret", [])
      /var/www/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  Please use the argument -v to see more details.

这意味着它实际上无法连接到数据库。

我的配置有什么问题,我该如何解决?

克里斯

你拼错了pathien。

在你docker-compose.yml你有:-

MYSQL_DATABASE: pathien
MYSQL_USER: pathien

.env你有:

DB_DATABASE=pathein
DB_USERNAME=pathein

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

AWS ElasticBeanstalk上的Laravel应用程序未连接到RDS数据库

无法连接到Windows上的MySQL数据库

AWS ElasticBeantaslk上的Sidekiq未连接到数据库

如何将搜索表单连接到数据库并在 Laravel 上检索数据

laravel无法连接到VM LAMP上的mysql数据库

无法将 App Engine 上的 Laravel 应用程序连接到 Cloud SQL 数据库

如何使用SQLAlchemy在Windows 10中的Docker上连接到Postgres数据库?

PHP-从本地主机连接到heroku PostGres数据库(在Windows上)

NodeJS:如何使用Mac上的Windows身份验证/ trustedConnection连接到MSQL数据库

Windows IoT Raspberry Pi上的ASP.NET MVC无法连接到SQL数据库

Windows 机器上的 Apache NiFi 无法连接到同一主机上的 MySQL 数据库

Pycharm Windows上的数据库连接错误

Acer / Windows 7未连接到特定网络上的wifi

在 docker compose 上运行时无法连接到 rails 应用程序中的数据库

如何在Windows 10上设置docker-compose初始化MySQL数据库?

未连接到 Internet 时,在本地 wamp 上出现“建立数据库连接时出错”

如何使用连接到本地机器上的另一个服务的 docker-compose 连接到数据库(redash & mysql & python_script)

Laravel 4未连接到数据库

无法连接到Windows上以docker-compose开头的容器的暴露端口

使用cx_oracle连接到Oracle数据库会在Windows上提供DPI-1047

如何在OSX和Windows VM上使用R + DBI + ODBC连接到Teradata数据库

如何使用Windows Phone 8连接到已经托管在服务器上的SQL Server数据库

无法连接到 Docker 上的数据库

连接到同一DBMS上的“外部”数据库

在AWS上为Django设置并连接到数据库

连接到 DigitalOcean droplet 上的 Hasura Postgres 数据库

无法连接到 Docker 上的 SQL 数据库

连接到Docker容器上的PostgreSQL数据库

无法连接到Android KivyMD上的mysql数据库