diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..7ec4b14 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +.git +.env +*.md +Dockerfile* +.dockerignore diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..ad2f537 --- /dev/null +++ b/.env.example @@ -0,0 +1 @@ +BOT_TOKEN=123456:replace_me diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..08f6b2b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,29 @@ +# === Этап 1: сборка === +# Берём образ с компилятором Go, собираем бинарник. +FROM golang:1.26-alpine AS build + +WORKDIR /src + +# Сначала зависимости (кэш Docker не пересобирает их без изменений go.mod) +COPY go.mod go.sum ./ +RUN go mod download + +# Потом код +COPY . . + +# Статичный бинарник без CGO — удобно класть в маленький alpine +RUN CGO_ENABLED=0 GOOS=linux go build -o /out/bot . + +# === Этап 2: запуск === +# Лёгкий образ только с бинарником (без компилятора). +FROM alpine:3.22 + +RUN apk add --no-cache ca-certificates tzdata + +WORKDIR /app +COPY --from=build /out/bot /app/bot + +# Токен НЕ кладём в образ — Coolify передаст BOT_TOKEN как env +ENV BOT_TOKEN= + +CMD ["/app/bot"]