130 lines
3.3 KiB
YAML
130 lines
3.3 KiB
YAML
version: "3.9"
|
|
|
|
# =============================================================================
|
|
# MASTER DOCKER COMPOSE - SINGLE SOURCE OF TRUTH
|
|
# =============================================================================
|
|
# This file manages ALL apps and shared services
|
|
# Used by both Portainer and CLI - no conflicts
|
|
# =============================================================================
|
|
|
|
services:
|
|
# ===========================================================================
|
|
# SHARED SERVICES (Global - used by all apps)
|
|
# ===========================================================================
|
|
|
|
postgres:
|
|
image: postgres:15
|
|
container_name: igny8_postgres
|
|
restart: always
|
|
environment:
|
|
POSTGRES_USER: igny8
|
|
POSTGRES_PASSWORD: igny8pass
|
|
POSTGRES_DB: igny8_db
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB} || exit 1"]
|
|
interval: 20s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 15s
|
|
networks: [igny8_net]
|
|
|
|
redis:
|
|
image: redis:7
|
|
container_name: igny8_redis
|
|
restart: always
|
|
command: ["redis-server", "--save", "60", "1", "--loglevel", "warning"]
|
|
volumes:
|
|
- redisdata:/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "redis-cli ping | grep -q PONG"]
|
|
interval: 20s
|
|
timeout: 3s
|
|
retries: 5
|
|
networks: [igny8_net]
|
|
|
|
pgadmin:
|
|
image: dpage/pgadmin4
|
|
container_name: igny8_pgadmin
|
|
restart: always
|
|
environment:
|
|
PGADMIN_DEFAULT_EMAIL: admin@igny8.com
|
|
PGADMIN_DEFAULT_PASSWORD: admin123
|
|
ports:
|
|
- "0.0.0.0:5050:80"
|
|
volumes:
|
|
- pgadmin_data:/var/lib/pgadmin
|
|
networks: [igny8_net]
|
|
|
|
filebrowser:
|
|
image: filebrowser/filebrowser:v2.25.0
|
|
container_name: igny8_filebrowser
|
|
restart: always
|
|
environment:
|
|
TZ: Asia/Karachi
|
|
ports:
|
|
- "0.0.0.0:8080:80"
|
|
volumes:
|
|
- /data:/srv
|
|
- /backups:/srv/backups
|
|
- filebrowser_db:/database
|
|
networks: [igny8_net]
|
|
labels:
|
|
- "com.docker.compose.project=igny8-infra"
|
|
- "com.docker.compose.service=filebrowser"
|
|
|
|
gitea:
|
|
image: gitea/gitea:latest
|
|
container_name: gitea
|
|
restart: always
|
|
environment:
|
|
- USER_UID=1000
|
|
- USER_GID=1000
|
|
volumes:
|
|
- ./gitea:/data
|
|
- /data/app/igny8:/deploy/igny8:rw # Mount app directory for deployment
|
|
ports:
|
|
- "0.0.0.0:3000:3000" # Web UI
|
|
- "0.0.0.0:2222:22" # SSH for Git access
|
|
networks: [igny8_net]
|
|
labels:
|
|
- "com.docker.compose.project=igny8-infra"
|
|
- "com.docker.compose.service=gitea"
|
|
|
|
caddy:
|
|
image: caddy:latest
|
|
container_name: igny8_caddy
|
|
restart: always
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
volumes:
|
|
- caddy_data:/data
|
|
- caddy_config:/config
|
|
# Mount Caddyfile for routing configuration
|
|
- /var/lib/docker/volumes/portainer_data/_data/caddy/Caddyfile:/etc/caddy/Caddyfile
|
|
networks: [igny8_net]
|
|
|
|
setup-helper:
|
|
image: alpine:3.20
|
|
container_name: setup-helper
|
|
command: ["sh", "-c", "sleep infinity"]
|
|
restart: always
|
|
networks: [igny8_net]
|
|
volumes:
|
|
- /data/backups:/backups:rw
|
|
- /scripts:/scripts:ro
|
|
|
|
volumes:
|
|
pgdata:
|
|
redisdata:
|
|
pgadmin_data:
|
|
filebrowser_db:
|
|
caddy_data:
|
|
caddy_config:
|
|
|
|
networks:
|
|
igny8_net:
|
|
external: true
|