为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 docker 容器中下载 golang 和 node

如何在 docker 容器中下载 golang 和 node

Go
aluckdog 2022-10-17 19:13:32
我正在构建一个简单的节点服务器以在 docker 中运行。我介绍了一个小的 golang 模块,可以通过运行来执行go run /root/component-review-handler/downloader/main.go -build 1621568 -outdir /usr我目前通过在启动时运行以下脚本在我的节点服务器中本地运行它exec(    `cd ${process.env.ROOT_PATH}/component-review-handler && go run cmd/downloader/main.go`,    (error, stdout, stderr) => {      if (error) {        logger.error(`error: ${error.message}`)        return      }      if (stderr) {        logger.log(`stderr: ${stderr}`)        return      }      logger.log(`stdout: ${stdout}`)    }  )但是当我在docker中运行代码时,出现以下错误error: Command failed: cd /usr/src/app/component-review-handler && go run cmd/downloader/main.go/bin/sh: 1: go: not found有谁知道如何在我的 docker 容器中安装 node 和 golang?当前的 DockerfileFROM node:14WORKDIR /usr/src/appCOPY package*.json ./RUN npm installCOPY . .ENV NODE_TLS_REJECT_UNAUTHORIZED='0'EXPOSE 3000CMD ["node", "server.js" ]
查看完整描述

1 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

Go 是一种编译语言,通常不需要 Go 工具链来运行 Go 程序。


我会为此使用多阶段构建。第一阶段是FROM golang拥有工具链并构建二进制文件;第二个COPY --from将第一个图像放入通常位于搜索路径上的目录中。


FROM golang:1.17 AS downloader

WORKDIR /app                       # not under /go

COPY component-review-handler/ ./  # (double-check this COPY syntax)

RUN go build -o downloader ./cmd/downloader


FROM node:14

# vvv add this line

COPY --from=downloader /app/downloader /usr/local/bin/


# same as before

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . .

ENV NODE_TLS_REJECT_UNAUTHORIZED='0'

EXPOSE 3000

CMD ["node", "server.js"]

由于二进制文件现在位于/usr/local/bin默认$PATH目录中,因此您可以在您的代码中运行它,而无需使用cdorgo run部分


const { execFile } = require('child_process');

execFile('downloader',

         (error, stdout, stderr) => { ... });


查看完整回答
反对 回复 2022-10-17
  • 1 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信