diff --git a/database/install.sql b/database/install.sql deleted file mode 100644 index c8524cf2..00000000 --- a/database/install.sql +++ /dev/null @@ -1,2 +0,0 @@ -CREATE USER marcus WITH PASSWORD 'marcus'; -CREATE DATABASE application OWNER marcus; diff --git a/database/seeds/001-install.sql b/database/seeds/001-install.sql new file mode 100644 index 00000000..8dc6b511 --- /dev/null +++ b/database/seeds/001-install.sql @@ -0,0 +1,15 @@ +DO $$ +BEGIN + IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'marcus') THEN + CREATE ROLE marcus LOGIN PASSWORD 'marcus'; + END IF; +END +$$; + +DO $$ +BEGIN + IF NOT EXISTS (SELECT 1 FROM pg_database WHERE datname = 'application') THEN + CREATE DATABASE application OWNER marcus; + END IF; +END +$$; diff --git a/database/structure.sql b/database/seeds/002-structure.sql similarity index 100% rename from database/structure.sql rename to database/seeds/002-structure.sql diff --git a/database/data.sql b/database/seeds/003-data.sql similarity index 100% rename from database/data.sql rename to database/seeds/003-data.sql diff --git a/database/setup.sh b/database/setup.sh index 5e36c2be..a386c5ce 100755 --- a/database/setup.sh +++ b/database/setup.sh @@ -1,3 +1,3 @@ -psql -f install.sql -U postgres -PGPASSWORD=marcus psql -d application -f structure.sql -U marcus -PGPASSWORD=marcus psql -d application -f data.sql -U marcus +psql -f ./seeds/001-install.sql -U postgres +PGPASSWORD=marcus psql -d application -f ./seeds/002-structure.sql -U marcus +PGPASSWORD=marcus psql -d application -f ./seeds/003-data.sql -U marcus diff --git a/docker-compose.yml b/docker-compose.yml index 572966a6..fa1a8208 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,8 +8,10 @@ services: - DB_HOST=pg-example - REDIS_HOST=redis-example depends_on: - - pg-example - - redis-example + pg-example: + condition: service_healthy + redis-example: + condition: service_started ports: - "127.0.0.1:8000:8000" - "127.0.0.1:8001:8001" @@ -25,8 +27,11 @@ services: - POSTGRES_DB=application volumes: - postgres_data:/var/lib/postgresql/data + - ./database/seeds:/docker-entrypoint-initdb.d:ro ports: - "127.0.0.1:5432:5432" + healthcheck: + test: ["CMD", "pg_isready", "-U", "marcus"] restart: always redis-example: