services: forgejo: image: {{ forgejo_docker_image }}:{{ forgejo_version }} container_name: forgejo restart: unless-stopped environment: - USER_UID={{ forgejo_uid }} - USER_GID={{ forgejo_gid }} - FORGEJO__database__DB_TYPE={{ forgejo_db_type }} - FORGEJO__database__HOST=host.docker.internal:{{ forgejo_db_port }} - FORGEJO__database__NAME={{ forgejo_db_name }} - FORGEJO__database__USER={{ forgejo_db_user }} - FORGEJO__database__PASSWD={{ forgejo_db_password }} {% if forgejo_use_redis %} - FORGEJO__cache__ENABLED=true - FORGEJO__cache__ADAPTER=redis - FORGEJO__cache__HOST=redis://redis:{{ redis_port }}/0 - FORGEJO__session__PROVIDER=redis - FORGEJO__session__PROVIDER_CONFIG=redis://redis:{{ redis_port }}/0 {% endif %} extra_hosts: - "host.docker.internal:host-gateway" volumes: - {{ forgejo_data_path }}/git:/data/git - {{ forgejo_data_path }}/attachments:/data/attachments - {{ forgejo_data_path }}/lfs:/data/lfs - {{ forgejo_config_path }}/app.ini:/data/gitea/conf/app.ini - {{ forgejo_custom_path }}:/data/gitea/custom - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - "127.0.0.1:{{ forgejo_http_port }}:3000" - "{{ forgejo_ssh_port }}:22" networks: - forgejo {% if forgejo_use_redis %} depends_on: - redis {% endif %} logging: driver: "json-file" options: max-size: "10m" max-file: "3" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000/api/healthz"] interval: 30s timeout: 10s retries: 3 start_period: 40s {% if forgejo_use_redis %} redis: image: redis:7-alpine container_name: forgejo-redis restart: unless-stopped volumes: - {{ forgejo_data_path }}/redis:/data networks: - forgejo command: redis-server --appendonly yes logging: driver: "json-file" options: max-size: "5m" max-file: "3" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 30s timeout: 3s retries: 3 {% endif %} networks: forgejo: driver: bridge