Files
gitea/docker-compose.yml
2026-06-08 10:57:27 +03:00

112 lines
4.4 KiB
YAML

services:
gitea:
image: gitea/gitea:latest
container_name: gitea
restart: unless-stopped
environment:
- USER_UID=1000
- USER_GID=1000
# Подключаемся к существующему PostgreSQL
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=postgres:5432 # Имя контейнера PostgreSQL
- GITEA__database__NAME=gitea # Будет создана автоматически
- GITEA__database__USER=labuser
- GITEA__database__PASSWD=${POSTGRES_PASSWORD} # Из .env файла (ВАЖНО!)
- GITEA__database__SCHEMA=public
# Настройки сервера
# - GITEA__server__DOMAIN=192.168.1.200
# - GITEA__server__ROOT_URL=http://192.168.1.200:3000
# - GITEA__server__SSH_DOMAIN=192.168.1.200
# - GITEA__server__SSH_PORT=22
- GITEA__server__HTTP_ADDR=0.0.0.0
- GITEA__server__HTTP_PORT=3000
# Redis
# 1. Для хранения сессий пользователей
- GITEA__session__PROVIDER=redis
- GITEA__session__PROVIDER_CONFIG=redis://redis:6379/0?pool_size=100&idle_timeout=180s
# 2. Для кэширования (ускоряет работу интерфейса)
- GITEA__cache__ENABLED=true
- GITEA__cache__ADAPTER=redis
- GITEA__cache__HOST=redis://redis:6379/1?pool_size=100&idle_timeout=180s
# 3. Для очередей задач (асинхронные операции)
- GITEA__queue__TYPE=redis
- GITEA__queue__CONN_STR=redis://redis:6379/2?pool_size=100&idle_timeout=180s
# Minio
- GITEA__attachment__STORAGE_TYPE=${GITEA__attachment__STORAGE_TYPE}
- GITEA__attachment__MINIO_ENDPOINT=${GITEA__attachment__MINIO_ENDPOINT}
- GITEA__attachment__MINIO_ACCESS_KEY_ID=${GITEA__attachment__MINIO_ACCESS_KEY_ID}
- GITEA__attachment__MINIO_SECRET_ACCESS_KEY=${GITEA__attachment__MINIO_SECRET_ACCESS_KEY}
- GITEA__attachment__MINIO_BUCKET=${GITEA__attachment__MINIO_BUCKET}
- GITEA__attachment__MINIO_BASE_PATH=${GITEA__attachment__MINIO_BASE_PATH}
- GITEA__attachment__MINIO_USE_SSL=${GITEA__attachment__MINIO_USE_SSL}
- GITEA__attachment__MINIO_INSECURE_SKIP_VERIFY=${GITEA__attachment__MINIO_INSECURE_SKIP_VERIFY}
# --- LFS (если нужно) ---
- GITEA__lfs__STORAGE_TYPE=${GITEA__lfs__STORAGE_TYPE}
- GITEA__lfs__MINIO_ENDPOINT=${GITEA__lfs__MINIO_ENDPOINT}
- GITEA__lfs__MINIO_ACCESS_KEY_ID=${GITEA__lfs__MINIO_ACCESS_KEY_ID}
- GITEA__lfs__MINIO_SECRET_ACCESS_KEY=${GITEA__lfs__MINIO_SECRET_ACCESS_KEY}
- GITEA__lfs__MINIO_BUCKET=${GITEA__lfs__MINIO_BUCKET}
- GITEA__lfs__MINIO_BASE_PATH=${GITEA__lfs__MINIO_BASE_PATH}
- GITEA__lfs__MINIO_USE_SSL=${GITEA__lfs__MINIO_USE_SSL}
- GITEA__lfs__MINIO_INSECURE_SKIP_VERIFY=${GITEA__lfs__MINIO_INSECURE_SKIP_VERIFY}
# Оптимизации
- GITEA__repository__ROOT=/data/git/repositories
- GITEA__repository__DETECTED_CHARSETS_ORDER=UTF-8,UTF-16BE,UTF-16LE
# Безопасность
#- GITEA__security__INSTALL_LOCK=true
- GITEA__service__DISABLE_REGISTRATION=true # Отключаем публичную регистрацию
- VIRTUAL_HOST=gitea.domain.ru
- LETSENCRYPT_HOST=gitea.domain.ru
- LETSENCRYPT_EMAIL=my@email.ru
# Можно добавить, если требуется указать внутренний порт:
- VIRTUAL_PORT=3000
networks:
- "net"
expose:
- "3000"
ports:
- "3090:3000"
# - "192.168.1.200:22:22" # Теперь SSH на стандартном порту!
volumes:
- gitea-data:/data
# Добавляем конфиг для MinIO
- /mnt/gitea/conf.d/minio-storage.ini:/etc/gitea/conf.d/minio-storage.ini:ro
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
deploy:
resources:
limits:
cpus: '0.5'
memory: 512M
reservations:
cpus: '0.25'
memory: 256M
healthcheck:
test: ["CMD", "/usr/bin/wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
volumes:
gitea-data:
driver: local
driver_opts:
type: none
device: /mnt/gitea/data
o: bind
networks:
net:
external: true