Ben*_*ann 16 sbt docker sbt-native-packager
文档说:
要构建映像并将其存储在本地Docker服务器中,请使用
docker:publishLocal
我刚刚开始使用Docker并且不熟悉"本地Docker服务器"的概念.那是什么,我应该在哪里寻找输出docker:publishLocal?
Gar*_*ady 27
这里描述了Docker的主要组件:https://docs.docker.com/introduction/understanding-docker/#what-are-the-major-docker-components
被描述为"Docker服务器"的是链接描述中的"Docker守护程序".Docker守护程序在本地计算机上运行,通常是docker二进制文件运行的命令的主要联系点.
Docker守护程序执行许多任务,包括:
SBT使用命名的任务publishLocal将资产发布到本地Ivy/Maven存储库(这是仅存在于您的计算机上的东西).
sbt-native-packager中的Docker支持尝试在Docker上下文中使用相同的任务,以便sbt docker:publishLocal在本地Docker服务器上构建映像.就像在本地发布到Ivy或Maven一样,此操作允许图像在本地可见以进行开发,但不会使其在本地计算机外部可见.
实际上,它映射到命令 docker build -t "${projectName}:${version}"
然后,您可以使用此映像docker run "${projectName}:${version}",但只能在本地计算机上使用.
SBT使用命名的任务publish将资产发布到远程Ivy/Maven存储库.这需要额外的配置,以描述发布图像的位置.
sbt-native-packager还尝试将此任务映射到Docker上下文中的相应操作.因此,插件在本地构建映像,然后将映像推送到适当的远程映像存储库.
为此,您需要添加dockerRepository设置.
如果将其设置为不带斜杠的字符串,例如"username1",则会在图像名称中添加"username1 /".当尝试推送图像时,Docker将尝试将图像推送到https://registry.hub.docker.com/的"username1"帐户中的公共Docker注册表.
如果将其设置为带有斜杠的字符串,例如"my.server1/username1",则还会将该字符串添加到图像名称中.这与前一种情况类似,不同之处在于Docker服务器将尝试在DNS中找到名为"my.server1"的服务器,并推送到该服务器而不是公共Docker注册表.
在实践中,它映射到
docker build -t "${dockerRepository}/${projectName}:${version}" . // working directory at `target/docker/stage`
docker push "${dockerRepository}/${projectName}:${version}"
然后,您可以使用本地计算机或其他计算机上的此映像docker run "${dockerRepository}/${projectName}:${version}".
该stage任务创建一个目录,其中包含Docker映像的所有文件,格式为可以发送到Docker守护程序的格式.这个目录是target/docker/stage.如果将工作目录更改为此处并运行docker build .,则可以使用该目录的内容构建映像.
| 归档时间: |
|
| 查看次数: |
8428 次 |
| 最近记录: |