首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文件添加到码头容器中,以便在启动时使用

将文件添加到码头容器中,以便在启动时使用
EN

Stack Overflow用户
提问于 2016-09-09 15:24:41
回答 2查看 6.6K关注 0票数 2

是否可以在run操作期间向码头容器提供文件,以便在容器启动时使用?

本质上,我希望向tomcat服务器提供一个类似于plugins.txt詹金斯码头中的txt文件。该文件应包含在容器启动期间下载的.war和.jar文件的名称和版本(.jar)。我希望这个设置能够更灵活地为客户提供定制的容器,而不是具有特定于客户的映像。但对我来说最重要的问题是:

  1. 我可以在容器启动时提供这样的文件吗?
  2. 我应该如何处理文件和/或容器的版本控制,以便能够检查特定于客户的容器包含什么?
  3. 还有什么我应该考虑的吗?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-10 13:45:53

有三种方法可以向容器提供配置数据。

  1. 在建造时 将其添加到Dockerfile中。例: 复制./config.txt /var/local/myapp/ 每次更改配置时,都需要创建一个新映像。如果您计划存储密码、证书或其他秘密,那么使用此技术也是个坏主意。
  2. 经过环境 docker运行-e name1=version1 -e name2=version2映像名 这是传递一些参数的一个很好的解决方案。但是不适合传递整个文件。
  3. 经过档案 如果您正在使用Docker /Windows或Docker (VirtualBox),您可以按照@BMitch的描述将本地目录装入您的停靠器容器中。 对于生产系统,主机将是远程的,因此需要将文件复制到主机或主机上的卷。config.txt主机名:/dir/ on /hostor复制到主机上的卷,我在其他答案中描述了这一点。

版本控制可以通过设置环境变量来处理。例:

代码语言:javascript
复制
docker run --name myservice -e VERS=2.0.1 myimage

您可以在运行时使用docker检索它。例:

代码语言:javascript
复制
docker inspect --format "{{index (index .Config.Env) 0 }}" myservice

这个指纹

代码语言:javascript
复制
VERS=2.0.1
票数 3
EN

Stack Overflow用户

发布于 2016-09-09 15:32:22

可以将单个文件作为卷加载到容器中:

代码语言:javascript
复制
docker run -v `pwd`/conf.txt:/app/conf.txt my_app

这需要在docker主机本身上运行,或者在Windows/MacOS上的用户目录下运行。您还可以在docker中创建一个命名卷,在其中可以存储这些文件并通过临时容器进行更新。

对于这些卷挂载,您确实需要小心权限,容器内部的uid可能与主机上的uid不匹配。您还能够挂载仅读取的文件,只需在卷挂载上附加一个简单的:ro

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

https://stackoverflow.com/questions/39414965

复制
相关文章

相似问题

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