一尘不染

Docker-Rails应用无法连接到链接的Postgres容器(似乎未在运行)

docker

我一直在遵循有关如何使用Docker 设置 Rails开发环境的指南:使用Docker
设置Rails开发环境

在此过程中,我遇到了一些麻烦,但是我设法解决了其中的大部分问题,直到运行Rails迁移的步骤为止。运行命令将docker-compose run web rake db:migrate产生以下结果:

rake aborted!
PG::ConnectionBad: could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?

docker-compose.yml:

version: '2'
services:
  db:
    image: postgres
    volumes:
      - ./pgdata:/pgdata
    environment:
      POSTGRES_DB: myapp_development
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD:
      PGDATA: /pgdata
  web:
    build: .
    command: bundle exec rails server --port 5000 --binding 0.0.0.0
    volumes_from:
      - container:myapp-web-sync:rw
      - container:myapp-bundle-sync:rw
    volumes:
      - ./keys:/root/.ssh/
    ports:
      - "5000:5000"
    environment:
      REDIS_URL: redis://redis:6379
      GEM_HOME: /bundle
    links:
      - db
      - redis
volumes:
  myapp-web-sync:
    external: true
  myapp-bundle-sync:
    external: true

阅读 245

收藏
2020-06-17

共1个答案

一尘不染

您尝试连接到localhost:5432,换句话说,您尝试连接到web容器,但您的要点是db。只需在应用程序中指定数据库主机即可db

2020-06-17