我很想制作可重复使用的dockerfiles。我没有看到这样做,因为没有变量,没有包含选项正确吗?任何人都有一个很好的选择(除了动态地创建/修改dockerfile和构建时间)?
希望能够重新使用生产env dockerfiles,因为每个服务有1个(例如:1个网络应用程序,1个数据库,1个缓存等)并在同一个图像上构建所有这些,因此我可以运行完整的应用程序在1个容器中(1个可能的用例在单个服务器上运行多个功能分支)。
是的,我知道我可以单独构建每个容器并链接它们,但似乎完全超过设置和管理(因为在某些情况下可能需要6个或更多容器用于单个功能分支)。
答案 0 :(得分:0)
如果您不想创建多个图像,您可以随时创建包含所有内容的怪物图像。在我看来,这是代码味道,但它是可能的。如果您永远不会跨服务器拆分服务,这甚至可能是有效的。
如果要在不同的上下文中使用相同类型的图像,可以使用环境变量来参数化行为并仍然使用相同的图像。例如,有一个bash脚本需要YOUR_VARIABLE并使用-e
选项启动容器(请参阅documentation)。 E.g。
docker run -e "YOUR_VARIABLE=value" --rm ubuntu env
答案 1 :(得分:0)
有fig之类的工具可以轻松地调出一些容器。您仍然可以获得可以单独部署的单独系统,但它们会出现并作为一个整体使用。
答案 2 :(得分:0)
您可以使用标签命名泊坞窗图像。这使链接dockerfile变得容易一些:
假设目录.
包含模块module1
的子目录,...
build_all.sh:
docker build -t "module1" module1
docker build -t "module1" module2
如果这是用于构建的序列,那么在module2/Dockerfile
中你可以使用
FROM module1
不完美,因为为什么module2需要提前知道module1,但它确实有效。