36 lines
877 B
Docker
36 lines
877 B
Docker
# Этап сборки
|
|
FROM docker.io/library/golang:1.22.2 AS builder
|
|
|
|
# Рабочая директория
|
|
WORKDIR /build
|
|
|
|
# Копируем файлы зависимостей
|
|
COPY go.mod go.sum ./
|
|
|
|
RUN go mod tidy
|
|
RUN go mod download
|
|
|
|
# Копируем весь код
|
|
COPY . .
|
|
|
|
RUN ls
|
|
|
|
# Собираем приложение (статически линкуем для Alpine)
|
|
RUN CGO_ENABLED=0 GOOS=linux go build -o /app ./cmd/api
|
|
|
|
# Этап запуска
|
|
FROM docker.io/library/alpine:latest
|
|
|
|
# Рабочая директория
|
|
WORKDIR /app
|
|
|
|
# Копируем бинарник из этапа сборки
|
|
COPY --from=builder /app .
|
|
# Копируем .env файл (если он есть в проекте)
|
|
COPY .env .env
|
|
|
|
# Порт, который будет слушать приложение
|
|
EXPOSE 8080
|
|
|
|
# Команда запуска
|
|
CMD ["./app"] |