diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8b71208 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,32 @@ +# 1. Этап сборки (Builder) +FROM golang:1.26-alpine AS builder + +RUN apk add --no-cache git ca-certificates + +WORKDIR /app + +ENV GOPRIVATE=git.lendry.ru/* + +# Принимаем токен из docker-compose (который взял его из .env) +ARG GIT_TOKEN +RUN git config --global url."https://lendry:${GIT_TOKEN}@git.lendry.ru/".insteadOf "https://git.lendry.ru/" + +COPY go.mod go.sum ./ +RUN go mod download + +COPY . . + +RUN CGO_ENABLED=0 GOOS=linux go build -o media-service ./cmd + +# 2. Финальный образ (Production) +FROM alpine:latest + +RUN apk --no-cache add ca-certificates tzdata + +WORKDIR /app + +COPY --from=builder /app/media-service . + +EXPOSE 50059 + +CMD ["./media-service"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..b25a6f9 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,19 @@ +services: + media-service: + container_name: media-service + image: lendry/media-service:dev + build: + context: . + dockerfile: Dockerfile + args: + # Docker Compose сам найдет GIT_TOKEN в файле .env и вставит его сюда + - GIT_TOKEN=${GIT_TOKEN} + restart: always + env_file: + - .env # А это прокидывает все остальные переменные (S3_BUCKET и т.д.) внутрь контейнера для работы Go + networks: + - erp-networks + +networks: + erp-networks: + external: true