diff options
Diffstat (limited to 'content/post/2023-01-12-gitrepo.md')
-rw-r--r-- | content/post/2023-01-12-gitrepo.md | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/content/post/2023-01-12-gitrepo.md b/content/post/2023-01-12-gitrepo.md deleted file mode 100644 index 18a06a2..0000000 --- a/content/post/2023-01-12-gitrepo.md +++ /dev/null @@ -1,161 +0,0 @@ ---- -author: NeonXP -categories: -- Мои проекты -date: "2023-01-12T20:22:00Z" -id: 55 -tags: -- it -- моё -title: GitRepo.ru -draft: false ---- - -# Сегодня серьезно переделал свой хостинг [репозиториев кода](https://gitrepo.ru/): - -- Переехал на большой арендованный сервак -- Привел в порядок оркестрацию вокруг сервака с использованием Docker Compose -- Gitea заменил на её форк [Forgejo](https://forgejo.org/) -- Впилил CI/CD на основе [Woodpecker CI](https://woodpecker-ci.org/) - -Приглашаю пользоваться заместо бездуховного западного github: <https://gitrepo.ru/> - -Сервер физически находится в датацентре в Москве у весьма годного провайдера Selectel. - -Тем более, время сейчас неспокойное и неизвестно когда github станет недоступен для РФ, а GitRepo — он вот тут, в нашей стране. - -## Немного про устройство - -Расскажу немного как я организовал себе Ops сервиса. - -У меня на руках `docker-compose.yml` который полностью описывает всю конфигурацию сервака, примерно так: - -```yml -version: "3" -services: - caddy: - image: caddy:2.6.2-alpine - container_name: gateway - restart: unless-stopped - ports: - - "80:80" - - "443:443" - - "443:443/udp" - volumes: - - ./Caddyfile:/etc/caddy/Caddyfile - - caddy_data:/data - - caddy_config:/config - networks: - - gateway - git: - image: codeberg.org/forgejo/forgejo:1.18.0-1 - container_name: git - environment: - - USER_UID=1000 - - USER_GID=1000 - - TZ=Europe/Moscow - - USER=git - - GITEA__database__DB_TYPE=postgres - - GITEA__database__HOST=db:5432 - - GITEA__database__NAME=${PG_NAME} - - GITEA__database__USER=${PG_USER} - - GITEA__database__PASSWD=${PG_PASS} - restart: always - networks: - - gitea - - gateway - volumes: - - /home/git/.ssh/:/data/git/.ssh - - forgejo:/data - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro - ports: - - "127.0.0.1:2222:22" - depends_on: - db: - condition: service_healthy - db: - image: postgres:13 - restart: always - environment: - - POSTGRES_USER=${PG_USER} - - POSTGRES_PASSWORD=${PG_PASS} - - POSTGRES_DB=${PG_NAME} - healthcheck: - test: /usr/bin/pg_isready - interval: 5s - timeout: 10s - retries: 120 - networks: - - gitea - volumes: - - postgres:/var/lib/postgresql/data - woodpecker-server: - image: woodpeckerci/woodpecker-server:latest - volumes: - - woodpecker-server-data:/var/lib/woodpecker/ - environment: - - WOODPECKER_OPEN=true - - WOODPECKER_GITEA=true - - WOODPECKER_GITEA_URL=https://gitrepo.ru - - WOODPECKER_GITEA_CLIENT=${GITEA_CLIENT} - - WOODPECKER_GITEA_SECRET=${GITEA_SECRET} - - WOODPECKER_HOST=https://ci.gitrepo.ru - - WOODPECKER_ADMIN=neonxp - - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET} - networks: - - gitea - - gateway - depends_on: - - git - woodpecker-agent: - image: woodpeckerci/woodpecker-agent:latest - command: agent - restart: always - depends_on: - - woodpecker-server - volumes: - - /var/run/docker.sock:/var/run/docker.sock - environment: - - WOODPECKER_SERVER=woodpecker-server:9000 - - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET} - networks: - - gitea -volumes: - woodpecker-server-data: - caddy_data: - caddy_config: - forgejo: - postgres: -networks: - gateway: - gitea: - external: false - -``` - -а рядом лежит `.env` файлик с значениями переменных `${...}`. - -Запускаю деплой я с локального компьютера, предварительно добавив удаленный сервер в [контекст докера](https://docs.docker.com/engine/context/working-with-contexts/): - -``` -# Создаю новый контекст для удаленного сервера -docker context create gitrepo --docker "host=ssh://gitrepo.ru" -# Все последующие docker команды выполняются на удаленном сервере -docker use gitrepo -# Возвращаюсь в локальный контекст -docker use default -``` - -## Оставшиеся проблемы - -Сейчас так получается, что Caddyfile должен лежать на удаленном сервере, т.к. часть конфига - -```yml - volumes: - - ./Caddyfile:/etc/caddy/Caddyfile -``` - -выполняется в контексте именно удаленного сервера, а значит при его апдейте на локальном серваке приходится делать SCP этого файла на сервак. Такое себе. - -Как это решить — есть интересная идея, но это уже в другой раз.
\ No newline at end of file |