48 lines
1.4 KiB
YAML
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 |