version: '3.8'
services:
postgres:
image: postgres:15-alpine
container_name: metabase-postgres
environment:
POSTGRES_DB: test_metabase_db
POSTGRES_USER: test_metabase_user
POSTGRES_PASSWORD: TestMetabasePassword789!
ports:
- "5432:5432"
networks:
- metabase-network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U test_metabase_user"]
interval: 10s
timeout: 5s
retries: 5
metabase:
image: metabase/metabase:v0.48.0
container_name: metabase-app
environment:
MB_DB_TYPE: postgres
MB_DB_DBNAME: test_metabase_db
MB_DB_PORT: 5432
MB_DB_USER: test_metabase_user
MB_DB_PASS: TestMetabasePassword789!
MB_DB_HOST: postgres
MB_ENABLE_PUBLIC_SHARING: "true"
MB_ENABLE_EMBEDDING: "true"
MB_JETTY_PORT: 3000
JAVA_OPTS: "-Xmx1g"
ports:
- "3000:3000"
networks:
- metabase-network
depends_on:
postgres:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
sample-postgres:
image: postgres:15-alpine
container_name: sample-database
environment:
POSTGRES_DB: test_sample_db
POSTGRES_USER: test_sample_user
POSTGRES_PASSWORD: TestSamplePassword456!
volumes:
- ./tests/fixtures/sample_data.sql:/docker-entrypoint-initdb.d/01-sample-data.sql
ports:
- "5433:5432"
networks:
- metabase-network
networks:
metabase-network:
driver: bridge