axe/deploy/drone/compose.yaml
2026-10-18 22:07:25 +03:00

71 lines
3.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Drone CI: server (интерфейс, webhook от Gitea) и docker-runner
# (исполняет шаги .drone.yml в контейнерах этого хоста).
#
# Перед запуском — в Gitea: Настройки → Applications → OAuth2-приложение,
# Redirect URI: http://<хост-drone>:8081/authorize
#
# .env рядом с этим файлом (в git не входит):
# GITEA_SERVER=https://gitea.example.com
# DRONE_GITEA_CLIENT_ID=...
# DRONE_GITEA_CLIENT_SECRET=...
# DRONE_GITEA_ADMIN_USERNAME=admin # аккаунт Gitea, станет админом Drone
# DRONE_SERVER_HOST=drone.example.com
# DRONE_SERVER_PROTO=https
# DRONE_RPC_SECRET= # openssl rand -hex 32
#
# Запуск: docker compose -p drone --env-file .env -f compose.yaml up -d
services:
drone:
image: drone/drone:2
restart: unless-stopped
ports:
# Веб-интерфейс и цель webhook от Gitea; за TLS-терминалом.
- "8081:80"
environment:
DRONE_GITEA_SERVER: ${GITEA_SERVER:?GITEA_SERVER is required}
DRONE_GITEA_CLIENT_ID: ${DRONE_GITEA_CLIENT_ID:?DRONE_GITEA_CLIENT_ID is required}
DRONE_GITEA_CLIENT_SECRET: ${DRONE_GITEA_CLIENT_SECRET:?DRONE_GITEA_CLIENT_SECRET is required}
# Общий секрет server ↔ runner: openssl rand -hex 32.
DRONE_RPC_SECRET: ${DRONE_RPC_SECRET:?DRONE_RPC_SECRET is required}
# Первый залогинившийся через Gitea становится админом Drone.
DRONE_USER_CREATE_OAUTH: username=${DRONE_GITEA_ADMIN_USERNAME:?DRONE_GITEA_ADMIN_USERNAME is required},admin=true
# Внешний адрес интерфейса: его видят Gitea (webhook) и браузер.
DRONE_SERVER_HOST: ${DRONE_SERVER_HOST:?DRONE_SERVER_HOST is required}
DRONE_SERVER_PROTO: ${DRONE_SERVER_PROTO:-https}
volumes:
- drone:/data
networks:
- drone
runner:
image: drone/drone-runner-docker:1
restart: unless-stopped
depends_on:
- drone
environment:
DRONE_RPC_PROTO: http
DRONE_RPC_HOST: drone
DRONE_RPC_SECRET: ${DRONE_RPC_SECRET:?DRONE_RPC_SECRET is required}
# Один конвейер за раз: деплои не должны пересекаться.
DRONE_RUNNER_CAPACITY: "1"
DRONE_RUNNER_NAME: prod-server
# Шаги пайплайнов (и их сервисы — postgres для тестов) поднимаются
# именно в этой сети: имя сети указано явно (name: drone), чтобы
# совпадало со значением DRONE_RUNNER_NETWORKS.
DRONE_RUNNER_NETWORKS: drone
volumes:
# Доступ к docker-демону: сборка образов, compose, деплой.
- /var/run/docker.sock:/var/run/docker.sock
networks:
- drone
networks:
# Имя фиксируем: DRONE_RUNNER_NETWORKS ссылается на него буквально,
# а префикс проекта (drone_drone) runner бы не узнал.
drone:
name: drone
volumes:
drone: