postgresql 无法将主机名“db”转换为地址:名称或服务未知

euoag5mw  于 2024-01-07  发布在  PostgreSQL
关注(0)|答案(1)|浏览(197)

我在一个项目中使用django,我们正在从sqlite3切换到postgres,所以我们需要将postgres添加到docker。由于某些原因,webservice无法连接到postgres。这是我的docker-compose和设置。

services:
  db:
    image: postgres:latest
    restart: always
    container_name: db
    environment:
      - POSTGRES_USER=pipeline_user
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=pipeline_service
    ports:
      - "5432:5432"
    networks: 
      - django
  webservice:
    build:
      context: ./webservice
      dockerfile: WebService.Dockerfile
    command: python ./src/manage.py runserver 0.0.0.0:8000
    ports:
      - "8000:8000"
    depends_on:
      - db
    networks: 
      - django
    links:
      - db:db
  djangoq:
    build:
      context: ./webservice
      dockerfile: WebService.Dockerfile
    command: python ./src/manage.py qcluster
    ports:
      - "8001:8000"
    depends_on:
      - db
    networks: 
      - django
    links:
      - db:db
  ui:
    build:
      context: ./ui
      dockerfile: UI.Dockerfile
    ports:
      - "4200:80"
    depends_on:
      - webservice
networks:
  django:
    driver: bridge

个字符
有人能看出我错过了什么吗?
我发现其他几个人也有这个问题,大多数解决方案都是在docker-compose.yml文件中添加网络或为postgres设置container_name,但这些对我不起作用。

mm9b1k5b

mm9b1k5b1#

根据大卫的评论,你不能用dockerfile运行migrate,但它确实是一个服务。我最终为postgres创建了第二个docker-compose文件,它启动了postgres并运行了迁移。这也很有帮助,因为每当docker关闭时,数据库就会被删除,所以你不必重新启动postgres。

services:
  db:
    image: postgres:latest
    restart: always
    container_name: db
    environment:
      - POSTGRES_USER=pipeline_user
      - POSTGRES_PASSWORD=<password>
      - POSTGRES_DB=pipeline_service
    ports:
      - "5432:5432"
  db_setup:
    depends_on:
      - db
    build:
      context: ./webservice
      dockerfile: WebService.Dockerfile
    command: python ./src/manage.py migrate

字符串

相关问题