php - 从 docker 容器中的 laravel 应用程序连接到主机中的 Postgresql?

标签 php laravel postgresql docker docker-compose

我收到错误 SQLSTATE[08006] [7] timeout expired (SQL: select count(*) as aggregate from "users")我已将 postgresql 监听地址设置为 0.0.0.0但它没有解决
需要更好的解决方法.env文件:

DB_CONNECTION=pgsql
DB_HOST=172.17.0.1 // <-- this won't connect. I declare like that based on docker0
DB_PORT=5432
DB_DATABASE=mydb
DB_USERNAME=postgres
DB_PASSWORD=postgres
docker-compose.yml文件:
version: '3'

networks:
  laravel:
    driver: bridge

volumes:
  dbdata:
    driver: local

services:
  nginx:
    build:
      context: .
      dockerfile: ./docker/nginx.dockerfile
    container_name: nginx
    ports:
      - "${DOCKER_SITE_HOST}:80"
    volumes:
      - .:/var/www/html
    depends_on:
      - php
    networks:
      - laravel

  php:
    build:
      context: .
      dockerfile: ./docker/php.dockerfile
    container_name: php
    volumes:
      - .:/var/www/html
    ports:
      - "9000:9000"
    networks:
      - laravel

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

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

最佳答案

终于通过使用此解决方法使其工作:

  • 允许postgresql主机的端口
  • 更改 listen_addressespostgresql.conf 上配置至*因此它变成 listen_addresses = '*'
  • 将此配置放在 pg_hba.conf 之上
  • # TYPE DATABASE USER CIDR-ADDRESS  METHOD
    host  all  all 0.0.0.0/0 md5
    
  • 重启postgresql
  • 最后使用 docker0 .env上的界面
  • 关于php - 从 docker 容器中的 laravel 应用程序连接到主机中的 Postgresql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64460598/

    相关文章:

    mysql - 验证三个唯一字段和软删除

    Laravel 5 无效的自定义请求 - 不重定向

    javascript - 如何从 Laravel 4.2 中的 View 脚本调用模型函数

    PostgreSQL 更新 - 带有左连接问题的查询

    php - 为什么php中的使用语言构造无法看到变量值的变化?

    php - 如何从评估范围中删除 $this?

    php - 修改后的 PHP 表单不起作用

    php - 如何在 laravel .env 文件中评论?

    postgresql - Postgres 是否设计用于写入共享数据存储?

    ruby-on-rails - ActiveRecord::Relation#explain 总是完整地运行查询