当我尝试连接后端(使用Sequelize)时,出现以下错误:

error ConnectionRefusedError [SequelizeConnectionRefusedError]: connect ECONNREFUSED 127.0.0.1:5432

docker-compose.yml :
version: "3.7"
services:
  frontend:
    build:
      context: ./client
      dockerfile: Dockerfile
    image: client
    ports:
      - "3000:3000"
    volumes:
      - ./client:/usr/src/app
  backend:
    build:
      context: ./server
      dockerfile: Dockerfile
    image: server
    ports:
      - "8000:8000"
    volumes:
      - ./server:/usr/src/app
  db:
    image: postgres
    environment:
      POSTGRES_DB: ckl
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: docker
    ports:
      - "5432:5432"

我究竟做错了什么 ?

提前致谢

最佳答案

假设您的后端正在连接到数据库,则应添加一个depends_on:

  backend:
    build:
      context: ./server
      dockerfile: Dockerfile
    image: server
    depends_on:
      - db
    ports:
      - "8000:8000"
    volumes:
      - ./server:/usr/src/app

如果您的应用程序配置为连接到db:5432localhost:5432,则现在可以在主机172.0.0.1:5432上访问该数据库,您需要将主机名localhost替换为db。您的postgres连接字符串也可能没有主机,并且可能默认情况下尝试连接到localhost。应该能够看续篇来弄清楚如何通过主机。

09-28 12:15