MIF_E31222379_BE/docker-compose.dev.yml

140 lines
3.3 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"
environment:
# Docker Environment Flag
DOCKER_ENV: "true"
# Base URL
BASE_URL: /apirijig/v2
# Server Settings
SERVER_HOST: 0.0.0.0
SERVER_PORT: 7000
# Database Settings - menggunakan service name sebagai host
DB_HOST: postgres
DB_PORT: 5432
DB_NAME: apirijig_v2
DB_USER: postgres
DB_PASSWORD: pahmiadmin
# Redis Settings - menggunakan service name sebagai host
REDIS_HOST: redis
REDIS_PORT: 6379
REDIS_PASSWORD: ""
REDIS_DB: 0
# Auth Keys
API_KEY: apirijikL0RH64wfkEpPqjAroLVPuFgT0EpsSLBPsmyUvIqZrUAi6X3HNPM7Vter
SECRET_KEY: TJ6h3vPMPlAuv7cbD27RU1/UyRctEih5k4H3+o7tZM1PSwTcoFETL6lqB54=
# TTL Settings
ACCESS_TOKEN_EXPIRY: 23*time.Hour
REFRESH_TOKEN_EXPIRY: 28*24*time.Hour
PARTIAL_TOKEN_EXPIRY: 2*time.Hour
volumes:
# Mount source code untuk hot reload
- .:/app
# Exclude node_modules dan vendor (jika ada)
- /app/tmp
- /app/vendor
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
networks:
- rijig_network_dev
# 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: