繁体   English   中英

无法将 docker nginx 服务器连接到本地 mysql 数据库

[英]Can't connect docker nginx server to local mysql database

我正在尝试将 docker nginx 服务器连接到本地 MySQL 数据库。但是我收到了这个错误:

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

这是我的 docker 作曲家代码:

version: "3"
networks:
 laravel:
services:
site:
  build:
   context: .
   dockerfile: nginx.dockerfile
  container_name: nginx
  ports:
   - 8080:80
  volumes:
   - ./src:/var/www/html:delegated
  depends_on:
   - php
   - redis
 networks:
   - laravel

php:
 build:
  context: .
  dockerfile: php.dockerfile
container_name: php
volumes:
  - ./src:/var/www/html:delegated
networks:
  - laravel

redis:
 image: redis:alpine
 container_name: redis
 restart: unless-stopped
 ports:
  - 6379:6379
 networks:
  - laravel

composer:
 build:
  context: .
  dockerfile: composer.dockerfile
 container_name: composer
 volumes:
  - ./src:/var/www/html
 working_dir: /var/www/html
 depends_on:
   - php
 user: laravel
 entrypoint: ["composer", "--ignore-platform-reqs"]
 networks:
  - laravel

artisan:
 build:
  context: .
  dockerfile: php.dockerfile
 container_name: artisan
 volumes:
  - ./src:/var/www/html:delegated
 working_dir: /var/www/html
 user: laravel
 entrypoint: ["php", "/var/www/html/artisan"]
 networks:
  - laravel

我只是通过添加这个来解决这个问题

主机.docker.internal

到我的数据库主机。 这是代码示例

DB_CONNECTION=pgsql
DB_HOST=host.docker.internal
DB_PORT=5432
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=

我不确定它会以您需要的方式帮助您您需要知道网关 ip 才能连接到本地计算机。

docker network inspect laravel | grep Gateway

然后把这个 ip 放到 DB 主机上。

PS请注意,重启后它将被更改。

暂无
暂无

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

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