Добавил сборку на локальном хосте
This commit is contained in:
@@ -2,3 +2,7 @@
|
|||||||
cache/
|
cache/
|
||||||
|
|
||||||
/config.toml
|
/config.toml
|
||||||
|
|
||||||
|
# Сборка
|
||||||
|
/trackers
|
||||||
|
/dist/
|
||||||
|
|||||||
@@ -20,6 +20,12 @@ This is an educational project written in Go 1.26.
|
|||||||
go build -o trackers ./main.go
|
go build -o trackers ./main.go
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Через [Task](https://taskfile.dev) (`task --list` — полный список):
|
||||||
|
```bash
|
||||||
|
task build # статический бинарь linux/amd64 (CGO_ENABLED=0) для сервера
|
||||||
|
task image # docker-образ из готового бинаря (Dockerfile.deploy)
|
||||||
|
```
|
||||||
|
|
||||||
### Run
|
### Run
|
||||||
```bash
|
```bash
|
||||||
go run main.go -config config.toml
|
go run main.go -config config.toml
|
||||||
@@ -48,6 +54,18 @@ Uses goreleaser for cross-platform builds (Linux amd64/arm64):
|
|||||||
goreleaser build --snapshot --clean
|
goreleaser build --snapshot --clean
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Deploy paths
|
||||||
|
|
||||||
|
Two independent ways to ship the service:
|
||||||
|
|
||||||
|
1. **Yandex Container Registry (buckland)** — CI (`.gitea/workflows/release.yml`)
|
||||||
|
собирает образ из `Dockerfile` (многоступенчатая сборка из исходников) и
|
||||||
|
пушит в реестр; buckland тянет образ оттуда.
|
||||||
|
2. **Локальная сборка (umbar)** — `Dockerfile.deploy` упаковывает готовый
|
||||||
|
бинарь (`task build`). Плейбук `umbar/playbook-trackers.yml` собирает бинарь
|
||||||
|
на control-хосте, доставляет его + `Dockerfile.deploy` на сервер и собирает
|
||||||
|
образ там (Go-тулчейн на сервере не нужен). Так же устроен `jellybit`.
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
**Single File Design**: All code is in `main.go` with clear functional separation:
|
**Single File Design**: All code is in `main.go` with clear functional separation:
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# Упаковка готового статического бинаря в минимальный образ — деплой на umbar
|
||||||
|
# (см. ../umbar/playbook-trackers.yml). Бинарь собирается снаружи:
|
||||||
|
# CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o trackers . (task build)
|
||||||
|
# distroless/static несёт CA-сертификаты (HTTPS к источникам списков трекеров).
|
||||||
|
# Пользователь задаётся в compose (user: "1000:1000").
|
||||||
|
#
|
||||||
|
# Тома (см. compose): /config (ro, рендерится плейбуком) + /cache (пишет сам).
|
||||||
|
#
|
||||||
|
# Канонический Dockerfile (многоступенчатая сборка из исходников) живёт рядом и
|
||||||
|
# используется CI (Yandex Registry) — этот файл нужен только серверной сборке.
|
||||||
|
FROM gcr.io/distroless/static-debian12
|
||||||
|
|
||||||
|
COPY trackers /usr/local/bin/trackers
|
||||||
|
|
||||||
|
EXPOSE 8080
|
||||||
|
|
||||||
|
ENTRYPOINT ["/usr/local/bin/trackers", "-config", "/config/config.toml"]
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
# yaml-language-server: $schema=https://taskfile.dev/schema.json
|
||||||
|
#
|
||||||
|
# Запуск команд проекта через Task (https://taskfile.dev).
|
||||||
|
# Список задач: `task --list`.
|
||||||
|
|
||||||
|
version: '3'
|
||||||
|
|
||||||
|
vars:
|
||||||
|
BINARY: trackers
|
||||||
|
PKG: .
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
default:
|
||||||
|
desc: Список доступных задач
|
||||||
|
cmds:
|
||||||
|
- task --list
|
||||||
|
silent: true
|
||||||
|
|
||||||
|
run:
|
||||||
|
desc: 'Локальный запуск (нужен ./config.toml)'
|
||||||
|
cmds:
|
||||||
|
- go run {{.PKG}} -config ./config.toml
|
||||||
|
|
||||||
|
build:
|
||||||
|
desc: Статический бинарь linux/amd64 для сервера (деплой umbar)
|
||||||
|
cmds:
|
||||||
|
- CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags='-s -w' -o {{.BINARY}} {{.PKG}}
|
||||||
|
|
||||||
|
test:
|
||||||
|
desc: Прогон тестов
|
||||||
|
cmds:
|
||||||
|
- go test ./...
|
||||||
|
|
||||||
|
tidy:
|
||||||
|
desc: go mod tidy
|
||||||
|
cmds:
|
||||||
|
- go mod tidy
|
||||||
|
|
||||||
|
image:
|
||||||
|
desc: 'Docker-образ из готового бинаря (Dockerfile.deploy, как на сервере umbar)'
|
||||||
|
deps: [build]
|
||||||
|
cmds:
|
||||||
|
- docker build -f Dockerfile.deploy -t trackers:dev .
|
||||||
|
|
||||||
|
clean:
|
||||||
|
desc: Удалить собранный бинарь
|
||||||
|
cmds:
|
||||||
|
- rm -f {{.BINARY}}
|
||||||
Reference in New Issue
Block a user