是否可以创建在构建映像时在主机上执行命令的Dockerfile
?
现在我正在做:
./script_that_creates_magic_file.sh
docker build .
使用Dockerfile:
FROM alpine
COPY magic_file
我希望能够:
docker build .
使用Dockerfile:
FROM alpine
# invoke script_that_creates_magic_file.sh on the host
COPY magic_file
当然,此脚本与Dockerfile位于同一目录中。
答案 0 :(得分:23)
(只是一个建议)
我们通常有以下结构来构建我们的泊坞窗图像:
my-image/
├── assets
│ ├── entrypoint.sh
│ └── install.sh
├── build.sh
├── Dockerfile
├── README.md
└── VERSION
script_that_creates_magic_file.sh
。其他常见任务涉及下载所需文件或临时从主机复制ssh密钥。最后,此脚本将调用docker build .
install.sh
RUN
我发现上述结构方便且自我记录,因为团队中的每个人都可以构建任何图像(没有特殊说明/步骤)。自述文件用于解释图像正在做什么......但我不会骗你...它通常是空的......(或者有一个h1
用于gitlab显示):)< / p>
答案 1 :(得分:7)
回答这个问题;没有内置功能可以在docker build
之前在主机上运行命令(即,没有“挂钩”来触发主机上的脚本)。
如果您提供有关您的用例的更多信息,可能还有其他选择(例如,使用--build-arg
和docker compose的组合)