# Development Dockerfile for BFF (Server) 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 # Copy service dependencies (needed for go.mod replace directives) COPY api/ledger ./api/ledger COPY api/payments/orchestrator ./api/payments/orchestrator COPY api/payments/methods ./api/payments/methods COPY api/payments/storage ./api/payments/storage COPY api/gateway/tron ./api/gateway/tron COPY api/billing/fees ./api/billing/fees COPY api/fx/oracle ./api/fx/oracle COPY api/fx/storage ./api/fx/storage COPY api/gateway/mntx ./api/gateway/mntx # 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 # Copy service dependencies COPY --from=builder /src/api/ledger ./api/ledger COPY --from=builder /src/api/payments/orchestrator ./api/payments/orchestrator COPY --from=builder /src/api/payments/methods ./api/payments/methods COPY --from=builder /src/api/payments/storage ./api/payments/storage COPY --from=builder /src/api/gateway/tron ./api/gateway/tron COPY --from=builder /src/api/billing/fees ./api/billing/fees COPY --from=builder /src/api/fx/oracle ./api/fx/oracle COPY --from=builder /src/api/fx/storage ./api/fx/storage COPY --from=builder /src/api/gateway/mntx ./api/gateway/mntx # Source code will be mounted at runtime WORKDIR /src/api/server EXPOSE 8080 CMD ["air", "-c", ".air.toml", "--", "-config.file", "/app/config.yml", "-debug"]