Change the password in postgres-init-configmap.yaml
CREATE USER slack_todo_user WITH PASSWORD 'SHOULD_BE_REPLACED_WITH_DB_PASSWORD';
- Start the database:
docker-compose up db -d- Wait for database to be ready:
docker-compose logs db
# Wait for "database system is ready to accept connections"- Initialize database and schema:
# copy initializing sqls
docker compose cp sql/init-db.sql db:/tmp/init-db.sql
docker compose cp sql/schema.sql db:/tmp/schema.sql
docker compose cp sql/maintenance_jobs.sql db:/tmp/maintenance_jobs.sql
docker compose cp sql/reminder_insert_cron_jobs.sql db:/tmp/reminder_insert_cron_jobs.sql# Method 1. then, execute; OR
docker compose exec db psql -U postgres -d postgres -f /tmp/init-db.sql
docker compose exec db psql -U postgres -d slack_todo_db -f /tmp/schema.sql
docker compose exec db psql -U postgres -d slack_todo_db -f /tmp/maintenance_jobs.sql
docker compose exec db psql -U postgres -d slack_todo_db -f /tmp/reminder_insert_cron_jobs.sql# Method 2. Connect to PostgreSQL container
docker-compose exec db psql -U postgres -d postgres
# Run initialization scripts in order:
\i /tmp/init-db.sql
\i /tmp/schema.sql
\i /tmp/maintenance_jobs.sql
\i /tmp/reminder_insert_cron_jobs.sql# Connect to PostgreSQL
docker-compose exec db psql -U postgres -d postgres- Create database and user:
Run the initialization command in sql/init-db.sql line by line
- Create schema and tables:
# Connect to the new database
\c slack_todo_dbRun the schema script in sql/schema.sql
-
Set up maintenance jobs: Run maintenance jobs script in sql/maintenance_jobs.sql
-
Set up reminder cron jobs: Run reminder cron jobs script in sql/reminder_insert_cron_jobs.sql
Check if everything is set up correctly:
-- Connect to the database
\c slack_todo_db
-- Check if schema exists
\dn
-- Check if tables exist
\dt todo_app.*
-- Check if extensions are installed
SELECT * FROM pg_extension WHERE extname IN ('pgcrypto', 'pg_trgm', 'pg_cron');
-- Check if user has proper permissions
\du slack_todo_userIf schema is already created:
-- Check current schema
SELECT current_schema();
-- Switch to todo_app schema
SET search_path TO todo_app, public;To start fresh:
# Stop and remove containers and volumes
docker-compose down -v
# Start again
docker-compose up db -d
# Then follow the initialization steps above