docker - 在 Windows 上构建容器时,Docker 构建变量始终为空
问题描述
我无法在我的一生中填充 dockerfile 中的 ARG。这在 Windows 平台上是否完全支持?
我的 Docker 文件:
>type Dockerfile
FROM microsoft/nanoserver
ARG arg1
RUN echo "${arg1}"
我的图像构建命令:
docker image build -t argtest . --build-arg arg1=ValueForArg1
结果:
Sending build context to Docker daemon 2.048kB
Step 1/3 : FROM microsoft/nanoserver
---> a6688cd24441
Step 2/3 : ARG arg1
---> Using cache
---> 97770e203c82
Step 3/3 : RUN echo "${arg1}"
---> Running in ca6545d4bd0e
"${arg1}"
Removing intermediate container ca6545d4bd0e
---> c296d654afef
Successfully built c296d654afef
Successfully tagged argtest:latest
解决方案
问题实际上是 Windows 如何在其脚本/批处理语言中表示变量。因此,该echo
命令(和任何其他命令)在 Windows 中无法像在大多数其他操作系统中那样工作。由于 Dockerfile 是在主机操作系统(即 Windows)而不是容器中运行的,因此它将使用 Windows 的命令和变量语法。
如果你使用
RUN echo "%arg1%"
(或您正在运行的任何命令),它应该适合您。
推荐阅读
- javascript - 如何在 React 中访问和更新对象数组中的字段?
- ruby-on-rails - 来自 Github 的 gem rails 没有更新
- docker - 使用 fabric-samples 文件夹启动 Hyperledger Fabric 的测试网络时的端口冲突
- javascript - 通过点击事件监听器获取嵌套元素的属性值
- javascript - 使用正交相机时 GLTF 对象的纹理消失
- heroku - 在 Heroku 中使用 Ncat 进行代理身份验证
- xcode - SwfitUI 2.0 Xcode 12 如何更新核心数据实体的单个属性
- google-drive-api - 更新时未保留 Google doc 文件样式
- mysql - 有没有一种快速的方法来使用 MySQL 更新一个 json 列数据?
- vb.net - 在 AutoCAD 运行期间编辑 Program Files 目录中的 Settings.txt 文档