【问题标题】:Getting postgres connected in docker-compose在 docker-compose 中连接 postgres
【发布时间】:2022-01-01 02:09:21
【问题描述】:

所以我有一个成功构建的映像,我将postgres 作为卷安装,但是我不断收到django.db.utils.OperationalError: 无法连接到服务器:连接被拒绝- 当我运行docker-compose up 时。我的Dockerfiledocker-compose.yml 看起来像这样:

# syntax=docker/dockerfile:1

FROM python:3.10-slim-buster

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /track

COPY requirements.txt .

RUN apt-get update \
    && apt-get -y install libpq-dev gcc \
    && pip install --upgrade pip \
    && pip install --default-timeout=100 -r requirements.txt


COPY . .

ENV DJANGO_SETTINGS_MODULE track.settings

EXPOSE 8000
version: "3.9"

services:
  django:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    stdin_open: true
    tty: true
    volumes:
    - .:/track
    ports:
    - "8000:8000"
    depends_on:
      - db

  db:
    image: postgres:9.6.10-alpine
    restart: always
    user: postgres
    volumes:
    - track_db:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASS: postgres
      POSTGRES_DB: postgres

volumes:
  track_db: {}

请问,我做错了什么?

【问题讨论】:

  • 您是否更新了 django 中的 DATABASE 设置以使用正确的凭据连接到 db

标签: django postgresql docker docker-compose


【解决方案1】:

Jango 服务必须链接到 db:

services:
  django:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    stdin_open: true
    tty: true
    volumes:
      - .:/track
    ports:
      - "8000:8000"
    depends_on:
      - db
    links:
      - db

现在您可以通过容器主机名连接到 db

【讨论】:

  • 谢谢@Andrew,不幸的是我仍然有那个连接被拒绝的错误
  • 可能是 django 脚本中的凭据错误?并且容器中的DB已经启动成功了?