将文件路径传递给dockerfile作为变量_ nodeJS dockerode Docker

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将文件路径传递给dockerfile作为变量_ nodeJS dockerode Docker相关的知识,希望对你有一定的参考价值。

就我而言,我正在创建config.json,需要将其从主机复制到容器中。

我发现有一些选项可以将args传递给我的dockerfile。所以第一步是:

1。创建Dockerfile:

FROM golang
WORKDIR /go/src/app
COPY . .                     /* here we have /foo directory */
COPY  $CONFIG_PATH ./foo/
EXPOSE $PORT
CMD ["./foo/run", "-config", "./foo/config.json"]

如您所见,我有2个变量[“ $ CONFIG_PATH”,“ $ PORT”]。

因此这些to变量是动态的,来自我在docker run中的命令。在这里,我需要将配置文件从主机复制到容器中,并且需要使用该[[config.json文件来运行我的项目。

构建图像后:

    第二步:
  • 从用户获取我的配置文件,并使用这些变量运行docker映像。

    let configFilePath = '/home/baazz/baaaf/config.json' let port = "8080" docker.run('my_image', null, process.stdout, { Env: [`$CONFIG_PATH=${configFilePath}`, `$PORT=${port}`] }).then(data => { }).catch(err => { console.log(err) })

    [我在尝试执行代码时收到此错误消息。

    打开JSON配置(./foo/config.json)时出错:打开./foo/config.json:没有这样的文件或目录。正在终止。
  • 答案
    您通常不希望在Docker映像中COPY这样的配置文件。您应该能够在多个环境中docker run相同图像而无需修改。

    相反,您可以在运行映像时使用docker run -v选项注入正确的配置文件:

    docker run -v $PWD/config-dev.json:/go/src/app/foo/config.json my_image

    ([Dockerode home page显示了一个等效的Binds选项。在Docker Compose中,这进入每个容器volumes:。不要求两个路径或文件名匹配。]

    由于这样的文件路径已成为人们如何运行容器的外部接口的一部分,因此您通常

    不希望在构建时对其进行配置。选择一个固定的路径和文档,该文件将是安装自定义配置文件的位置。

    以上是关于将文件路径传递给dockerfile作为变量_ nodeJS dockerode Docker的主要内容,如果未能解决你的问题,请参考以下文章

    可以将来自docker-compose.yml的env变量传递给dockerfile吗?

    将主机的环境变量传递给 dockerfile

    如何将文件名作为类变量传递?

    如何将 settings.py 中的变量传递给视图?

    将视图(php文件)作为字符串传递给yii 2中registerJS中的变量js

    将变量从 PHP/MySQL 传递给 actionscript 以播放音频文件