46 lines
1.2 KiB
Docker
46 lines
1.2 KiB
Docker
# ===== Билдер =====
|
||
FROM golang:1.25rc2-alpine AS builder
|
||
|
||
# Устанавливаем зависимости для сборки
|
||
RUN apk add --no-cache git make gcc musl-dev
|
||
|
||
# Рабочая директория
|
||
WORKDIR /build
|
||
|
||
# Копируем файлы модулей
|
||
COPY go.mod go.sum ./
|
||
|
||
# Скачиваем зависимости
|
||
RUN go mod download
|
||
|
||
# Копируем весь проект
|
||
COPY . .
|
||
|
||
# Собираем бинарник (статически линкованный)
|
||
RUN CGO_ENABLED=0 GOOS=linux go build \
|
||
-ldflags="-w -s -extldflags '-static'" \
|
||
-o /app/server \
|
||
./server.go
|
||
|
||
# ===== Финальный образ =====
|
||
FROM alpine:3.19
|
||
|
||
# Устанавливаем tzdata для работы с временными зонами
|
||
RUN apk add --no-cache tzdata ca-certificates && \
|
||
update-ca-certificates
|
||
|
||
# Копируем бинарник
|
||
COPY --from=builder /app/server /usr/local/bin/server
|
||
|
||
# Копируем .env если нужен
|
||
# COPY --from=builder /build/.env /app/.env
|
||
|
||
# Настройки среды
|
||
ENV GIN_MODE=release \
|
||
PORT=50051
|
||
|
||
# Открываем порт
|
||
EXPOSE $PORT
|
||
|
||
# Запускаем сервер
|
||
CMD ["/usr/local/bin/server"] |