MIF_E31222379_BE/docker-compose.dev.yml

113 lines
2.6 KiB
YAML

# docker-compose.dev.yml - Development environment dengan Air hot reload
services:
# PostgreSQL Database
postgres:
image: postgres:16-alpine
container_name: rijig_postgres_dev
restart: unless-stopped
environment:
POSTGRES_DB: apirijig_v2
POSTGRES_USER: postgres
POSTGRES_PASSWORD: pahmiadmin
PGDATA: /var/lib/postgresql/data/pgdata
ports:
- "5433:5432"
volumes:
- postgres_data_dev:/var/lib/postgresql/data
- ./init-db:/docker-entrypoint-initdb.d
networks:
- rijig_network_dev
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d apirijig_v2"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
# Redis Cache
redis:
image: redis:7-alpine
container_name: rijig_redis_dev
restart: unless-stopped
ports:
- "6378:6379"
volumes:
- redis_data_dev:/data
networks:
- rijig_network_dev
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 5
start_period: 15s
# Go Application dengan Air hot reload
app:
build:
context: .
dockerfile: Dockerfile.dev
container_name: rijig_app_dev
restart: unless-stopped
ports:
- "7000:7000"
env_file:
- .env.docker
volumes:
# Mount source code untuk hot reload
- .:/app
# Cache Go modules untuk performance
- go_modules_cache:/go/pkg/mod
# Exclude tmp directory untuk mencegah konflik
- /app/tmp
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
networks:
- rijig_network_dev
working_dir: /app
# pgAdmin (optional - untuk GUI database management)
pgadmin:
image: dpage/pgadmin4:latest
container_name: rijig_pgadmin_dev
restart: unless-stopped
environment:
PGADMIN_DEFAULT_EMAIL: admin@rijig.com
PGADMIN_DEFAULT_PASSWORD: admin123
PGADMIN_CONFIG_SERVER_MODE: "False"
ports:
- "8080:80"
volumes:
- pgadmin_data_dev:/var/lib/pgadmin
depends_on:
- postgres
networks:
- rijig_network_dev
# Redis Commander (optional - untuk GUI redis management)
redis-commander:
image: rediscommander/redis-commander:latest
container_name: rijig_redis_commander_dev
restart: unless-stopped
environment:
REDIS_HOSTS: local:redis:6379
ports:
- "8081:8081"
depends_on:
- redis
networks:
- rijig_network_dev
networks:
rijig_network_dev:
driver: bridge
volumes:
postgres_data_dev:
redis_data_dev:
pgadmin_data_dev:
go_modules_cache: