Docker与Laravel数据库的连接

jjhzyzn0  于 2023-01-10  发布在  Docker
关注(0)|答案(1)|浏览(158)

当我使用终端进行迁移或执行某些命令时遇到问题,我收到错误

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for database failed: Name or service not known

我的ENV:

DB_CONNECTION=mysql
DB_HOST=database
DB_PORT=3306
DB_DATABASE=products
DB_USERNAME=homestead
DB_PASSWORD=secret

这些信息也在Docker中。当我打开应用程序时,代码在localhost上工作,但在终端中我得到错误。当我将DB_HOST更改为localhost或www.example.com时127.0.0.1,它在终端中工作,但它在Web上的应用程序中不工作,并且它不将数据保存在同一数据库中。我不知道还能做什么。有没有办法使终端和Web都工作?

database:
    image: mysql:5.7
    container_name: database
    ports:
      - ${FORWARD_DB_PORT:-3306}:3306
    environment:
      MYSQL_DATABASE: products
      MYSQL_USER: homestead
      MYSQL_PASSWORD: secret
      MYSQL_ROOT_PASSWORD: secret
      SERVICE_NAME: mysql
    volumes:
      - dbdata:/var/lib/mysql
      - .docker/database/entrypoint/:/docker-entrypoint-initdb.d
    networks:
      - app-network
olqngx59

olqngx591#

此错误有几种可能的原因:
1.数据库服务器可能已关闭或无法从网络访问。
1.数据库服务器的主机名可能不正确或键入错误。

  1. DNS服务器或网络配置可能存在问题,导致无法解析主机名。
    要解决此问题,您可以尝试以下步骤:
    1.验证数据库服务器是否正在运行并且可以从网络访问。
    1.检查数据库服务器的主机名并确保其正确。
    1.尝试ping数据库服务器的主机名,看看是否可以将其解析为IP地址。
    1.检查网络配置和DNS设置以确保其正确。

相关问题