首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker映像构建失败:"protoc-gen-grpc-web:程序未找到或不可执行“

Docker映像构建失败:"protoc-gen-grpc-web:程序未找到或不可执行“
EN

Stack Overflow用户
提问于 2022-11-22 19:02:19
回答 1查看 25关注 0票数 0

我继承了一个在kubernetes上运行多个微服务的项目。在复制回购并运行上一个团队概述的步骤之后,我在构建需要部署的映像时遇到了问题。构建的脚本是:

代码语言:javascript
复制
cd graph_endpoint
cp ../../Protobufs/Graph_Endpoint/graph_endpoint.proto .
protoc -I. graph_endpoint.proto --js_out=import_style=commonjs:.
protoc -I. graph_endpoint.proto --grpc-web_out=import_style=commonjs,mode=grpcwebtext:.
export NODE_OPTIONS=--openssl-legacy-provider
npx webpack ./test.js --mode development
cp ./dist/graph_endpoint.js ../public/graph_endpoint.js
cd ..

docker build . -t $1/canvas-lti-frontend:v2
docker push $1/canvas-lti-frontend:v2

我从第4行得到一个错误:

代码语言:javascript
复制
protoc-gen-grpc-web: program not found or is not executable
--grpc-web_out: protoc-gen-grpc-web: Plugin failed with status code 1.

知道怎么修吗?我以前没有码头工人的经验。

这是Dockerfile:

代码语言:javascript
复制
FROM node:16


# Install app dependencies
COPY package*.json /frontend-app/
WORKDIR /frontend-app
RUN npm install
COPY server.js /frontend-app/

# Bundle app source
COPY public /frontend-app/public
COPY routes /frontend-app/routes
COPY controllers /frontend-app/controllers

WORKDIR /frontend-app
EXPOSE 3000
CMD [ "node", "server.js"]

和package.json:

代码语言:javascript
复制
{
  "name": "frontend",
  "version": "1.0.0",
  "description": "The user-facing application for the Canvas LTI Student Climate Dashboard",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@okta/oidc-middleware": "^4.3.0",
    "@okta/okta-signin-widget": "^5.14.0",
    "express": "^4.18.2",
    "express-session": "^1.17.2",
    "vue": "^2.6.14"
  },
  "devDependencies": {
    "nodemon": "^2.0.20",
    "protoc-gen-grpc-web": "^1.4.1"
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-22 21:14:05

在运行构建脚本的机器上没有安装protoc-gen-grpc-web

您可以从grpc-web回购的释出页面下载插件。

protoc有一个插件机制。

protoc在路径中查找它的插件,并期望这些二进制文件是前缀protoc-gen-{foo}

但是,当您引用来自protoc的插件时,您只需使用{foo},通常以_out和有时是_opt (即protoc ... --{foo}_out --{foo}_opt )作为后缀。

插件protoc-gen-grpc-web (一旦安装并在主机路径中访问)被protoc ... --grpc_web_out=...引用

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74537786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档