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
},
}
Есть ли что-то, что я делаю неправильно в конфигурации? Большое спасибо!