- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在我的 Node 应用程序的 dockerode 容器中编译并执行 java 程序。我可以通过首先使用基本 javascript 写入 tmp.java
文件,然后运行以下 shell 命令来完成此操作:
docker run --rm -v $PWD:/app -w/app java:8 javac tmp.java
docker run --rm -v $PWD:/app -w/app java:8 java tmp
但是,我现在尝试过渡到使用 dockerode 模块,并尝试按如下方式复制此功能(基于 dockerode github 上的示例):
docker.run(
'java:8',
['javac', 'tmp.java'],
{
Volumes: {
'/': {}
},
WorkingDir: '/'
},
process.stdout
)
.then(data => {
var output = data[0]
console.log('OUTPUT: ', output)
var container = data[1]
console.log(output.StatusCode)
return container.remove()
})
但是,当我指定 Volumes
和 WorkingDir
选项时,以及当我忽略这些选项,我收到错误:javac:找不到文件:tmp.java
,我认为这意味着我的卷未正确安装。本质上,我试图创建一个临时微容器,在容器中编译并运行我的java程序,然后销毁容器。因此,我无法在主机系统上本地安装 JDK 并编译程序,并且基本上只能在容器内工作。
我目前正在尝试使用命令式 Docker 命令来实现此用例,并且能够使用上面的 cli 命令来完成此操作,但是,我无法使用 dockerode
执行相同的操作 Node (无论是通过命令式命令还是使用 dockerfile)。
我真的很感谢任何帮助!
最佳答案
问题是您的目录未映射。
此选项对象相当于选项--rm -v $PWD:/app -w/app
{
HostConfig: {
AutoRemove: true,
Binds: [
`${process.cwd()}:/app`
]
},
WorkingDir: '/app'
}
自动删除:true
是 --rm
绑定(bind):[ `${process.cwd()}:/app` ]
是 -v $PWD:/app
,带有 process.cwd ()
为 $PWD
WorkingDir:'/app'
是 -w/app
我还必须更改参数的顺序,因为我收到 TypeError: dest.on is not a function
。运行 dockerode@3.1.0 时,我必须将输出流设置为第三个参数,将选项对象设置为第四个参数。
所以完整的命令如下所示:
docker.run(
'java:8',
['javac', 'tmp.java'],
process.stdout,
{
HostConfig: {
AutoRemove: true,
Binds: [
`${process.cwd()}:/app`
]
},
WorkingDir: '/app'
}
)
关于javascript - dockerode 命令式 cli 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60628363/
我计划在 docker 中运行我的应用程序。我想在 docker 容器上动态启动、停止、构建、运行命令......。我发现了一个名为 dockerode 的工具。 Here是项目存储库。这个项目有文档
我有这个代码: import * as Docker from 'dockerode' const docker = new Docker() const remoteDockerImage = do
我正在尝试在我的 Node 应用程序的 dockerode 容器中编译并执行 java 程序。我可以通过首先使用基本 javascript 写入 tmp.java 文件,然后运行以下 shell 命令
我用这些命令创建了一些网络: docker network create --driver bridge my-network 我有一些已经使用 dockerfile 创建的 docker 镜像。 在
我正在尝试使用 dockerode 按照示例 here 运行 docker 容器。 。 我遇到的问题是容器的输出打印到标准输出,但我试图捕获它并将其存储在变量中,同时如果可能的话使用 promise
我正在尝试编写一个可以启动 Docker 容器的 Web 应用程序。因此,我使用dockerode模块。短模块如下所示: //index.js var Docker = require('docker
我用 docker-compose打造容器互联互通的“园区”。这里没什么特别的,我有 API/前端/后端等。有我的 docker-compose.yml : version: "2" services
我是一名优秀的程序员,十分优秀!