Files
go-microservices/api-gateway/Dockerfile

36 lines
1.1 KiB
Docker

FROM golang:1.24-alpine AS build
RUN apk add --no-cache git ca-certificates protobuf-dev
WORKDIR /app
ARG PROTOC_GEN_GO_VERSION=v1.36.10
ARG PROTOC_GEN_GO_GRPC_VERSION=v1.5.1
COPY go.mod go.sum ./
RUN go mod download
# install Go protoc plugins (pinned for Go 1.24 compatibility)
RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@${PROTOC_GEN_GO_VERSION} && \
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@${PROTOC_GEN_GO_GRPC_VERSION}
COPY api-gateway ./api-gateway
COPY services/auth-service ./services/auth-service
COPY proto ./proto
# generate proto files
RUN mkdir -p proto/auth proto/user proto/post && \
export PATH=/go/bin:$PATH && \
protoc --go_out=proto --go_opt=paths=source_relative \
--go-grpc_out=proto --go-grpc_opt=paths=source_relative \
--proto_path=proto \
proto/auth.proto proto/user.proto proto/post.proto && \
ls -la proto/auth/ proto/user/ proto/post/
RUN go build -o /app/main ./api-gateway/cmd
FROM alpine:3.20
RUN apk add --no-cache ca-certificates
WORKDIR /app
COPY --from=build /app/main /app/main
EXPOSE 8080
ENTRYPOINT ["/app/main"]