Files
gitea-homelab/docker-compose.yml
Raghav bb68b6b9f2 Initial commit
Co-Authored-By: Oz <oz-agent@warp.dev>
2026-04-16 09:04:22 +05:30

75 lines
2.1 KiB
YAML

services:
gitea:
image: gitea/gitea:1.24.2
container_name: gitea
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
env_file:
- .env
environment:
USER_UID: ${PUID}
USER_GID: ${PGID}
GITEA__server__DOMAIN: ${GITEA_DOMAIN}
GITEA__server__ROOT_URL: ${GITEA_ROOT_URL}
GITEA__server__SSH_DOMAIN: ${GITEA_DOMAIN}
GITEA__server__SSH_PORT: ${GITEA_SSH_PORT}
GITEA__server__START_SSH_SERVER: "false"
GITEA__database__DB_TYPE: postgres
GITEA__database__HOST: postgres:5432
GITEA__database__NAME: ${POSTGRES_DB}
GITEA__database__USER: ${POSTGRES_USER}
GITEA__database__PASSWD: ${POSTGRES_PASSWORD}
GITEA__security__INSTALL_LOCK: "true"
GITEA__security__SECRET_KEY: ${GITEA_SECRET_KEY}
GITEA__security__INTERNAL_TOKEN: ${GITEA_INTERNAL_TOKEN}
ports:
- "${GITEA_HTTP_PORT}:3000"
- "${GITEA_SSH_PORT}:22"
volumes:
- ${GITEA_BASE_PATH}/gitea-data:/data
healthcheck:
test: ["CMD", "wget", "--spider", "--quiet", "http://localhost:3000/api/healthz"]
interval: 20s
timeout: 5s
retries: 10
start_period: 30s
postgres:
image: postgres:16-alpine
container_name: gitea-postgres
restart: unless-stopped
env_file:
- .env
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
volumes:
- ${GITEA_BASE_PATH}/postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 10
start_period: 20s
caddy:
image: caddy:2.10-alpine
container_name: gitea-caddy
restart: unless-stopped
profiles: ["tls"]
env_file:
- .env
depends_on:
gitea:
condition: service_healthy
ports:
- "80:80"
- "443:443"
volumes:
- ./caddy/Caddyfile:/etc/caddy/Caddyfile:ro
- ${GITEA_BASE_PATH}/caddy-data:/data
- ${GITEA_BASE_PATH}/caddy-config:/config