Overview
The Docker Compose configuration provisions 4 separate PostgreSQL databases:- vizboard_main - Main application database (users, projects, widgets)
- vizboard_test1 - Test database for widget development
- vizboard_test2 - Test database for widget development
- vizboard_test3 - Test database for widget development
The main database stores VizBoard’s internal data, while test databases serve as external data sources you can connect to from within the application to test visualization widgets.
Prerequisites
Install Docker
Download and install Docker Desktop for your platform:
- macOS/Windows: Docker Desktop
- Linux: Docker Engine
Docker Compose Configuration
VizBoard includes a completedocker-compose.yml file in the project root:
Database Configuration Details
Main Database (db_main)
| Parameter | Value | Description |
|---|---|---|
| Image | postgres:15 | PostgreSQL version 15 |
| Port | 5432:5432 | Standard PostgreSQL port |
| User | postgres | Database superuser |
| Password | postgres | Default development password |
| Database | vizboard_main | Main application database |
| Volume | postgres_data_main | Persistent data storage |
Test Database 1 (db_test1)
| Parameter | Value | Description |
|---|---|---|
| Image | postgres:15 | PostgreSQL version 15 |
| Port | 5433:5432 | Mapped to host port 5433 |
| User | postgres | Database superuser |
| Password | testdbpass1234 | Test database password |
| Database | vizboard_test1 | E-commerce store data |
| Volume | postgres_data_test1 | Persistent data storage |
Test Database 2 (db_test2)
| Parameter | Value | Description |
|---|---|---|
| Image | postgres:15 | PostgreSQL version 15 |
| Port | 5434:5432 | Mapped to host port 5434 |
| User | postgres | Database superuser |
| Password | testdbpass1234 | Test database password |
| Database | vizboard_test2 | E-commerce store data |
| Volume | postgres_data_test2 | Persistent data storage |
Test Database 3 (db_test3)
| Parameter | Value | Description |
|---|---|---|
| Image | postgres:15 | PostgreSQL version 15 |
| Port | 5435:5432 | Mapped to host port 5435 |
| User | postgres | Database superuser |
| Password | testdbpass1234 | Test database password |
| Database | vizboard_test3 | Business client/order data |
| Volume | postgres_data_test3 | Persistent data storage |
Start Docker Containers
Start All Databases
Navigate to the VizBoard project root and start all containers:The
-d flag runs containers in detached mode (background).First run downloads the PostgreSQL 15 image (~100MB). Subsequent starts are nearly instant.
Docker Management Commands
Common Operations
Connect to Databases
Using psql (PostgreSQL CLI)
Using Database Tools
Connect using GUI tools like pgAdmin, DBeaver, or TablePlus:Main Database Connection
- Host:
localhost - Port:
5432 - Database:
vizboard_main - Username:
postgres - Password:
postgres
Test Database Connections
Test1:
Test2:
Test3:
localhost:5433 / vizboard_test1 / postgres / testdbpass1234Test2:
localhost:5434 / vizboard_test2 / postgres / testdbpass1234Test3:
localhost:5435 / vizboard_test3 / postgres / testdbpass1234Data Persistence
Docker Volumes
Database data is stored in Docker volumes that persist across container restarts:postgres_data_main- Main database datapostgres_data_test1- Test database 1 datapostgres_data_test2- Test database 2 datapostgres_data_test3- Test database 3 data
Stopping or removing containers does not delete volume data. Data persists until you explicitly remove volumes with
docker-compose down -v or docker volume rm.Backup and Restore
Networking
All containers are connected to a custom bridge network (app-network), allowing them to communicate with each other using service names:
- Containers can reach each other using hostnames:
db_main,db_test1, etc. - The application connects to
localhostfrom the host machine - All containers are isolated from other Docker networks
If you need to connect VizBoard running in Docker to these databases, use the service name (e.g.,
db_main) instead of localhost in the connection string.Troubleshooting
Port Already in Use
If you see errors likeport 5432 is already allocated:
-
Check what’s using the port:
-
Stop the conflicting service or change the port in
docker-compose.yml:
Container Won’t Start
Check container logs for errors:- Insufficient memory allocated to Docker
- Corrupted volume data (try
docker-compose down -vand restart) - Port conflicts (see above)
Cannot Connect from Application
Verify:- Containers are running:
docker ps - Correct port in
DATABASE_URLenvironment variable - Firewall isn’t blocking ports 5432-5435
- Docker Desktop is running (macOS/Windows)
Data Not Persisting
Ensure you’re not usingdocker-compose down -v which deletes volumes. Use docker-compose stop or docker-compose down (without -v) to preserve data.
Clean Slate
To completely reset all databases:Production Considerations
Next Steps
Initialize Database Schema
With Docker containers running, proceed to:
- Run Prisma migrations to create tables
- Seed test databases with sample data
- Start the development server:
npm run dev
