This template allows deploying a forgejo en either Scaleway or Hetzner (untested) without much knowledge about them. It DOES require knowledge about Terragrunt and ansible. A wizard of sorts is provided but it will not guarantee success without some knowledge about the underlying technology.
76 lines
2.2 KiB
Django/Jinja
76 lines
2.2 KiB
Django/Jinja
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
|