services: << service_name >>: image: docker.io/gitea/gitea:1.26.1 restart: << restart_policy >> environment: - USER_UID=<< user_uid >> - USER_GID=<< user_gid >> <%- if database_type != 'sqlite' %> - GITEA__database__DB_TYPE=<< database_type >> <%- if database_external %> - GITEA__database__HOST=<< database_host >> <%- else %> - GITEA__database__HOST=<< service_name >>_db <%- endif %> - GITEA__database__NAME=<< database_name >> - GITEA__database__USER=${DATABASE_USER} - GITEA__database__PASSWD=${DATABASE_PASSWORD} <%- endif %> - GITEA__server__SSH_PORT=<< ports_ssh >> <%- if not traefik_enabled %> - GITEA__server__ROOT_URL=<< gitea_url >> <%- else %> - GITEA__server__ROOT_URL=https://<< traefik_host >>.<< traefik_domain >> <%- endif %> <%- if not database_external and (database_type == "postgres" or database_type == "mysql") or traefik_enabled %> networks: <%- if not database_external and database_type != 'sqlite' %> - << service_name >>_backend <%- endif %> <%- if traefik_enabled %> - << traefik_network >> <%- endif %> <%- endif %> ports: <%- if not traefik_enabled %> - "<< ports_http >>:3000" <%- endif %> - "<< ports_ssh >>:22" volumes: - << service_name >>_data:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro <%- if traefik_enabled %> labels: - traefik.enable=true - traefik.docker.network=<< traefik_network >> - traefik.http.services.<< service_name >>_web.loadBalancer.server.port=3000 - traefik.http.routers.<< service_name >>_http.service=<< service_name >>_web - traefik.http.routers.<< service_name >>_http.rule=Host(`<< traefik_host >>.<< traefik_domain >>`) - traefik.http.routers.<< service_name >>_http.entrypoints=<< traefik_entrypoint >> <%- if traefik_tls_enabled %> - traefik.http.routers.<< service_name >>_https.service=<< service_name >>_web - traefik.http.routers.<< service_name >>_https.rule=Host(`<< traefik_host >>.<< traefik_domain >>`) - traefik.http.routers.<< service_name >>_https.entrypoints=<< traefik_tls_entrypoint >> - traefik.http.routers.<< service_name >>_https.tls=true - traefik.http.routers.<< service_name >>_https.tls.certresolver=<< traefik_tls_certresolver >> <%- endif %> <%- endif %> <%- if not database_external and database_type != 'sqlite' %> depends_on: - << service_name >>_db <%- endif %> <%- if not database_external and database_type == "postgres" %> << service_name >>_db: image: docker.io/library/postgres:17.9 restart: << restart_policy >> environment: - TZ=<< container_timezone >> - POSTGRES_USER=${DATABASE_USER} - POSTGRES_PASSWORD=${DATABASE_PASSWORD} - POSTGRES_DB=<< database_name >> networks: - << service_name >>_backend healthcheck: test: ["CMD-SHELL", "pg_isready -U << database_user >>"] start_period: 30s interval: 10s timeout: 10s retries: 5 volumes: - << service_name >>_db:/var/lib/postgresql/data <%- elif not database_external and database_type == "mysql" %> << service_name >>_db: image: docker.io/library/mysql:8.1 restart: << restart_policy >> environment: - MYSQL_USER=${DATABASE_USER} - MYSQL_PASSWORD=${DATABASE_PASSWORD} - MYSQL_DATABASE=<< database_name >> - MYSQL_ROOT_PASSWORD=${DATABASE_PASSWORD} networks: - << service_name >>_backend volumes: - << service_name >>_db:/var/lib/mysql <%- endif %> volumes: << service_name >>_data: driver: local <%- if not database_external %> <%- if database_type == "postgres" or database_type == "mysql" %> << service_name >>_db: driver: local <%- endif %> <%- endif %> <%- if not database_external and (database_type == "postgres" or database_type == "mysql") or traefik_enabled %> networks: <%- if not database_external %> << service_name >>_backend: driver: bridge <%- endif %> <%- if traefik_enabled %> << traefik_network >>: external: true <%- endif %> <%- endif %>