dotnet-v7/postgres/docker-compose-postgres.yml

48 lines
1.4 KiB
YAML

services:
postgres:
image: ${POSTGRESQL_IMAGE}
container_name: ${POSTGRESQL_CONTAINER_NAME}
hostname: ${POSTGRESQL_HOSTNAME_NAME}
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
restart: always
ports:
- "5432:5432"
volumes:
- ./data:/var/lib/postgresql/data
- ./backups:/backups
networks:
- postgres-network
init-db:
image: ${POSTGRESQL_IMAGE}
container_name: ${INITDB_CONTAINER_NAME}
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
volumes:
- ./backups:/backups
depends_on:
- postgres
networks:
- postgres-network
entrypoint: >
bash -c "
echo 'Waiting for PostgreSQL to start...';
until pg_isready -h ${POSTGRESQL_HOSTNAME_NAME} -U ${POSTGRES_USER}; do sleep 1; done;
echo 'Creating database ${POSTGRES_DB} if it does not exist...';
psql -h ${POSTGRESQL_HOSTNAME_NAME} -U ${POSTGRES_USER} -c 'CREATE DATABASE ${POSTGRES_DB};' || true;
echo 'Restoring backup from /backups/backup.dump into ${POSTGRES_DB}...';
pg_restore -h ${POSTGRESQL_HOSTNAME_NAME} -U ${POSTGRES_USER} -d ${POSTGRES_DB} ${POSTGRES_DB_DUMP};
echo 'Backup restored successfully.';
"
restart: on-failure
networks:
postgres-network:
driver: bridge