Django-Docker-PostgreSQL несколько db

В настоящее время я пытаюсь понять, как я могу установить несколько баз данных с помощью docker-compose.yml.

С одной базой данных все работает хорошо, docker-compose.yml с одной базой данных это:

version: "3.7"

x-service-volumes: &service-volumes
  - ./:/app/:rw,cached

x-database-variables: &database-variables
  POSTGRES_DB: postgres
  POSTGRES_USER: postgres
  POSTGRES_PASSWORD: postgres

x-app-variables: &app-variables
  <<: *database-variables
  POSTGRES_HOST: postgres

services:
  website:
    image: "django_image:latest"
    command: python manage.py runserver 0.0.0.0:8000
    volumes: *service-volumes
    environment: *app-variables
    depends_on:
      - postgres
    ports:
      - "8000:8000"

  db_migrate:
    image: "django_image:latest"
    command: python manage.py migrate
    volumes: *service-volumes
    environment: *app-variables
    depends_on:
      - postgres

  postgres:
    image: postgres:latest
    ports:
      - "5432:5432"
    environment: *database-variables
    volumes:
      - db-data:/var/lib/postgresql/data
    restart: unless-stopped

  pgadmin:
    container_name: pgadmin_container
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-admin@admin.com}
      PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin}
      PGADMIN_CONFIG_SERVER_MODE: "False"
    volumes:
      - pgadmin:/var/lib/pgadmin
    ports:
      - "${PGADMIN_PORT:-5050}:80"
    restart: unless-stopped

volumes:
  db-data:
  pgadmin:

Но, когда я изменяю docker-compose.yml с приведенным ниже конфигом и добавляю в корневой каталог create-multiple-db.sh, postgres db_migrate выдает:

Не удалось перевести имя хоста "postgres" в адрес: Временный сбой в разрешении имен

docker-compose.yml:

version: "3.7"

x-service-volumes: &service-volumes
  - ./:/app/:rw,cached

x-database-variables: &database-variables
  POSTGRES_DB: postgres
  POSTGRES_USER: postgres
  POSTGRES_PASSWORD: postgres

x-app-variables: &app-variables
  <<: *database-variables
  POSTGRES_HOST: postgres

services:

  website:
    image: "django_image:latest"
    container_name: django_container
    volumes: *service-volumes
    command: python manage.py runserver 0.0.0.0:8000
    ports:
      - "8000:8000"

  db_migrate:
    image: "django_image:latest"
    container_name: db_migrate_container
    command: python manage.py migrate
    volumes: *service-volumes
    environment: *app-variables
    depends_on:
      - postgres

  postgres:
    container_name: postgres_container
    image: ashimjk/postgres-multiple-db:latest
    environment:
      POSTGRES_MULTIPLE_DB: ${POSTGRES_MULTIPLE_DB:-auth,datahub}
      POSTGRES_USER: ${POSTGRES_USER:-postgres}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
      PGDATA: /data/postgres
    volumes:
      - postgres:/data/postgres
    ports:
      - "5432:5432"
    networks:
      - postgres
    restart: unless-stopped

  pgadmin:
    container_name: pgadmin_container
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-admin@admin.com}
      PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin}
      PGADMIN_CONFIG_SERVER_MODE: "False"
    volumes:
      - pgadmin:/var/lib/pgadmin
    ports:
      - "${PGADMIN_PORT:-5050}:80"
    networks:
      - postgres
    restart: unless-stopped

networks:
  postgres:
    driver: bridge

volumes:
  postgres:
  pgadmin:

также create-multiple-db.sh:

#!/bin/bash

set -e
set -u

function create_user_and_database() {
    local database=$1

    echo "  Creating user and database '$database'"

    psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
        CREATE USER $database;
        CREATE DATABASE $database;
        GRANT ALL PRIVILEGES ON DATABASE $database TO $database;
EOSQL
}

if [ -n "$POSTGRES_MULTIPLE_DB" ]; then
    echo "Multiple database creation requested: $POSTGRES_MULTIPLE_DB"

    for db in $(echo $POSTGRES_MULTIPLE_DB | tr ',' ' '); do
        create_user_and_database $db
    done

    echo "Multiple databases created"
fi

Мой сайт/settings.py имеет следующий вид:

DATABASES = {
    'default': {
        'ENGINE': "django.db.backends.postgresql",
        'NAME': "postgres",
        'USER': "postgres",
        'PASSWORD': "postgres",
        'HOST': os.getenv('POSTGRES_HOST'),
        'PORT': 5432
    },
}

Есть ли что-то, что я делаю неправильно в конфигурации? Большое спасибо!

Вернуться на верх