49 lines
908 B
Docker
49 lines
908 B
Docker
## BUF BUILD
|
|
FROM bufbuild/buf:1.50.0 AS buf
|
|
WORKDIR /buf
|
|
|
|
# Create client and server services
|
|
COPY buf.yaml buf.gen.yaml base.openapi.yaml ./
|
|
COPY proto ./proto
|
|
RUN buf generate
|
|
|
|
|
|
## CLIENT BUILD
|
|
FROM node:22-alpine AS client
|
|
WORKDIR /client
|
|
|
|
# Install client dependencies
|
|
COPY client/package.json client/package-lock.json ./
|
|
RUN npm ci
|
|
|
|
# Get client source
|
|
COPY client .
|
|
|
|
# Get buf service
|
|
COPY --from=buf /buf/client/src/lib/services ./src/lib/services
|
|
|
|
# Build client
|
|
RUN npm run build
|
|
|
|
|
|
## SERVER BUILD
|
|
FROM golang:1.23 AS server
|
|
WORKDIR /server
|
|
|
|
# Install server dependencies
|
|
COPY server/go.mod server/go.sum ./
|
|
RUN go mod download && go mod verify
|
|
|
|
# Get server source
|
|
COPY server .
|
|
|
|
# Get client build
|
|
COPY --from=client /client/build ./client
|
|
|
|
# Get buf service
|
|
COPY --from=buf /buf/server/internal/services ./internal/services
|
|
|
|
# Build server
|
|
RUN go build -v -o /server/main .
|
|
|
|
CMD ["/server/main"] |