【问题标题】:Connection refused when running docker-compose exec app php artisan migrate运行 docker-compose exec app php artisan migrate 时连接被拒绝
【发布时间】:2019-06-07 17:08:48
【问题描述】:

在终端上运行 docker-compose exec app php artisan migrate 时出现 PDOException::("SQLSTATE[HY000] [2002] Connection denied")

这是我在 .env 文件上的数据库配置

DB_CONNECTION=mysql
DB_HOST=172.20.0.4
DB_PORT=3306
DB_DATABASE=queue_db
DB_USERNAME=root
DB_PASSWORD=root

我也检查了容器ip

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' worker-db

输出:172.20.0.4

这是我的 docker-compose.yml

version: '3'
services:

#PHP Service
app:
    build:
    context: .
    dockerfile: ./docker/Dockerfile
    image: digitalocean.com/php
    container_name: worker-app
    restart: unless-stopped
    tty: true
    environment:
    SERVICE_NAME: app
    SERVICE_TAGS: dev
    working_dir: /var/www
    volumes:
    - ./:/var/www
    - ./docker/config/php/local.ini:/usr/local/etc/php/conf.d/local.ini
    networks:
    - app-network

#Nginx Service
webserver:
    image: nginx:alpine
    container_name: worker-webserver
    restart: unless-stopped
    tty: true
    ports:
    - "8090:80"
    - "443:443"
    volumes:
    - ./:/var/www
    - ./docker/config/nginx/conf.d/:/etc/nginx/conf.d/
    networks:
    - app-network

#MySQL Service
db:
    image: mysql
    container_name: worker-db
    # restart: unless-stopped
    tty: true
    ports:
    - "3306:3306"
    environment:
    MYSQL_DATABASE: queue_db
    MYSQL_ROOT_PASSWORD: root
    SERVICE_TAGS: dev
    SERVICE_NAME: mysql
    networks:
    - app-network

#Docker Networks
networks:
app-network:
    driver: bridge

#Volumes
volumes:
dbdata:
    driver: local

堆栈跟踪中有一个奇怪的错误,其中 ip 不同我不确定为什么它会获得不同的 ip,但在我的 .env 文件中,我使用的容器 ip 是“172.20.0.4”

Exception trace:
1   PDOException::("SQLSTATE[HY000] [2002] Connection refused")
  /var/www/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

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

提前致谢。

【问题讨论】:

  • 我还尝试使用 artisan 命令 docker-compose exec app php artisan cache:clear 删除清除缓存。但没有运气
  • 试试这个,在你的终端上运行ifconfig,然后寻找inet,它类似于192.168.1.4。您应该将该 IP 地址用作 DB_HOST

标签: laravel docker


【解决方案1】:

好的,在我尝试运行 php artisan config:clear 之后,它现在可以工作了。

【讨论】:

    猜你喜欢
    • 2021-11-24
    • 2022-01-24
    • 2017-10-03
    • 2021-06-24
    • 1970-01-01
    • 2018-10-19
    • 2021-10-12
    • 2018-11-17
    • 1970-01-01
    相关资源
    最近更新 更多