diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..93a316a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,36 @@ +# ЭТАП 1: Сборка +FROM golang:1.21-alpine AS builder + +# Устанавливаем рабочую директорию +WORKDIR /build + +# Копируем файлы зависимостей +COPY go.mod ./ +# Если есть go.sum, раскомментируйте следующую строку +# COPY go.sum ./ + +# Загружаем зависимости +RUN go mod download + +# Копируем исходный код +COPY . . + +# Собираем статически скомпилированный бинарный файл для Linux +RUN CGO_ENABLED=0 GOOS=linux go build -o /app-binary main.go + +# ЭТАП 2: Финальный образ +FROM alpine:latest + +# Добавляем сертификаты (нужны для HTTPS запросов) и временную зону +RUN apk --no-cache add ca-certificates tzdata + +WORKDIR /root/ + +# Копируем только собранный бинарник из первого этапа +COPY --from=builder /app-binary . + +# Открываем порт +EXPOSE 8080 + +# Запускаем приложение +CMD ["./app-binary"] \ No newline at end of file