From a544937ed502a95c36f53b64491db16646ea0147 Mon Sep 17 00:00:00 2001 From: Sozhan Natarajan Date: Sat, 25 Jan 2025 23:48:50 +0530 Subject: [PATCH] Generate protobuf code for Typescript service - Frontend --- .gitignore | 2 -- docker-gen-proto.sh | 8 +++++++- src/frontend/Dockerfile | 7 ++----- src/frontend/genproto/Dockerfile | 13 +++++++++++++ src/frontend/package.json | 2 +- 5 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 src/frontend/genproto/Dockerfile diff --git a/.gitignore b/.gitignore index 4a6df8a42e..efc40c8a1f 100644 --- a/.gitignore +++ b/.gitignore @@ -44,8 +44,6 @@ test/tracetesting/tracetesting-vars.yaml /src/accounting/src/protos/ /src/cart/src/protos/ /src/fraud-detection/src/main/proto -/src/frontend/pb/ -/src/frontend/protos/ /src/payment/demo.proto /src/shipping/proto/ /src/currency/proto diff --git a/docker-gen-proto.sh b/docker-gen-proto.sh index 6b08921a6d..30670642bf 100755 --- a/docker-gen-proto.sh +++ b/docker-gen-proto.sh @@ -30,6 +30,12 @@ gen_proto_python() { python -m grpc_tools.protoc -I /build/pb/ --python_out="./src/$1/" --grpc_python_out="./src/$1/" /build/pb/demo.proto } +gen_proto_ts() { + echo "Generating Typescript protobuf files for $1" + docker build -f "src/$1/genproto/Dockerfile" -t "$1-genproto" . + docker run --rm -v $(pwd):/build "$1-genproto" +} + if [ -z "$1" ]; then #gen_proto_dotnet accounting #gen_proto_java ad @@ -37,7 +43,7 @@ if [ -z "$1" ]; then gen_proto_go checkout gen_proto_cpp currency #gen_proto_ruby email - #gen_proto_ts frontend + gen_proto_ts frontend #gen_proto_js payment gen_proto_go product-catalog #gen_proto_php quote diff --git a/src/frontend/Dockerfile b/src/frontend/Dockerfile index ae27d932b9..36f07f84aa 100644 --- a/src/frontend/Dockerfile +++ b/src/frontend/Dockerfile @@ -1,7 +1,6 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 - FROM node:20-alpine AS deps RUN apk add --no-cache libc6-compat @@ -11,18 +10,16 @@ COPY ./src/frontend/package*.json ./ RUN npm ci FROM node:20-alpine AS builder -RUN apk add --no-cache libc6-compat protobuf-dev protoc +RUN apk add --no-cache libc6-compat WORKDIR /app COPY --from=deps /app/node_modules ./node_modules -COPY ./pb ./pb +COPY ./src/frontend/protos ./protos COPY ./src/frontend . -RUN npm run grpc:generate RUN npm run build FROM node:20-alpine AS runner WORKDIR /app -RUN apk add --no-cache protobuf-dev protoc ENV NODE_ENV=production diff --git a/src/frontend/genproto/Dockerfile b/src/frontend/genproto/Dockerfile new file mode 100644 index 0000000000..4cc0986f9c --- /dev/null +++ b/src/frontend/genproto/Dockerfile @@ -0,0 +1,13 @@ +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 + +FROM node:20-alpine + +WORKDIR /build + +RUN apk add --no-cache libc6-compat protobuf-dev protoc + +COPY ./src/frontend/package*.json ./ +RUN npm ci + +CMD ["npm", "run", "grpc:generate"] \ No newline at end of file diff --git a/src/frontend/package.json b/src/frontend/package.json index 7992f8349e..3ff40cc008 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "npm run grpc:generate && NODE_OPTIONS='-r ./utils/telemetry/Instrumentation.js' next dev", + "dev": "NODE_OPTIONS='-r ./utils/telemetry/Instrumentation.js' next dev", "build": "next build", "start": "node --require ./Instrumentation.js server.js", "lint": "next lint",