42 lines
1.2 KiB
Docker
42 lines
1.2 KiB
Docker
FROM golang:1.24-alpine AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
ENV GOPROXY=https://goproxy.cn,direct
|
|
|
|
RUN apk add --no-cache protobuf
|
|
RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.5 && \
|
|
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.5.1
|
|
|
|
COPY backend/go.mod backend/go.sum ./backend/
|
|
COPY backend ./backend
|
|
COPY proto ./proto
|
|
|
|
WORKDIR /app/backend
|
|
|
|
RUN go mod download
|
|
RUN mkdir -p /app/backend/pkg/gen && \
|
|
protoc -I /app/proto \
|
|
--go_out=/app/backend/pkg/gen --go_opt=paths=source_relative \
|
|
--go-grpc_out=/app/backend/pkg/gen --go-grpc_opt=paths=source_relative \
|
|
/app/proto/yoresee_doc/v1/yoresee_doc.proto
|
|
RUN go mod tidy
|
|
RUN CGO_ENABLED=0 go build -p 1 -o main.out cmd/main.go && \
|
|
CGO_ENABLED=0 go build -p 1 -o migrate.out ./cmd/migrate && \
|
|
CGO_ENABLED=0 go build -p 1 -o db_init.out ./cmd/db_init && \
|
|
CGO_ENABLED=0 go build -p 1 -o es_init.out ./cmd/es_init
|
|
|
|
FROM alpine:latest AS runner
|
|
|
|
WORKDIR /app
|
|
|
|
COPY --from=builder /app/backend/main.out .
|
|
COPY --from=builder /app/backend/migrate.out .
|
|
COPY --from=builder /app/backend/db_init.out .
|
|
COPY --from=builder /app/backend/es_init.out .
|
|
|
|
EXPOSE 8080
|
|
EXPOSE 9090
|
|
|
|
CMD ["sh", "-c", "./migrate.out && ./db_init.out && ./es_init.out && ./main.out"]
|