# Development Dockerfile for mntx-gateway Service with Air hot reload

FROM golang:alpine AS builder

RUN apk add --no-cache bash git build-base protoc protobuf-dev && \
    go install google.golang.org/protobuf/cmd/protoc-gen-go@latest && \
    go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest && \
    go install github.com/air-verse/air@latest

WORKDIR /src

COPY api/proto ./api/proto
COPY api/pkg ./api/pkg
COPY ci/scripts/proto/generate.sh ./ci/scripts/proto/
RUN bash ci/scripts/proto/generate.sh

# Runtime stage for development with Air
FROM golang:alpine

RUN apk add --no-cache bash git build-base && \
    go install github.com/air-verse/air@latest

WORKDIR /src

# Copy generated proto and pkg from builder
COPY --from=builder /src/api/proto ./api/proto
COPY --from=builder /src/api/pkg ./api/pkg

# Source code will be mounted at runtime
WORKDIR /src/api/gateway/mntx

EXPOSE 50075 9405 8084

CMD ["air", "-c", ".air.toml", "--", "-config.file", "/app/config.yml", "-debug"]
