Как добавить флаги в сборку golang в файле dockerfile

#node.js #exec

#node.js #выполнение

Вопрос:

В настоящее время я запускаю сервер узлов с подмодулем golang в docker. Чтобы запустить модуль golang, я выполняю команду

 go run cmd/downloader/main.go -build 1621568 -outdir /src/results  

Я не смог понять, как добавить эти флаги в сборку golang в моем файле dockerfile. Вот мой текущий файл dockerfile.

 FROM golang:1.17 AS downloader WORKDIR /app COPY component-review-handler/ ./  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"]  

В службе узлов я выполняю двоичный файл golang, запустив

 exec(  `downloader`,  (error, stdout, stderr) =gt; {  if (error) {  logger.error(`error: ${error.message}`)  return  }  if (stderr) {  logger.log(`stderr: ${stderr}`)  return  }  logger.log(`stdout: ${stdout}`)  }  )  

Проблема в том, что мне нужно добавить флаги в команду загрузчика. Кто-нибудь знает, как я могу добавить этот флаг при динамическом запуске двоичного файла на узловом сервере?

 -build 1621568 -outdir /src/results  

Комментарии:

1. Я не понимаю, как это на самом деле вопрос о работе или даже вопрос о докере. Конечно, вы запускаете приложение Go, но вы спрашиваете о nodejs exec. Я собираюсь удалить эти метки. Уверенные в себе несогласные, не стесняйтесь отвергать меня.

2. Конечно, извините за плохие флаги. Это сервер узлов, на котором работает двоичный файл go в докере, просто хотел быть доскональным. Спасибо за помощь!

Ответ №1:

Вместо этого попробуйте execFile

 execFile('downloader', ['-build', '1621568', '-outdir', '/src/results'], (error, stdout, stderr) =gt; {  if (error) {  logger.error(`error: ${error.message}`)  return  }  if (stderr) {  logger.log(`stderr: ${stderr}`)  return  }  logger.log(`stdout: ${stdout}`)  }  )  

Комментарии:

1. Когда я пытаюсь добавить флаги здесь, я получаю следующую ошибку ошибка: Команда не выполнена: флаг загрузчика ‘-сборка 1621568’ указан, но не определен: -сборка 1621568

2. Попробуйте execFile execFile('downloader', ['-build', '1621568', '-outdir', '/src/results'], (error, stdout, stderr) =gt; {...})