在Docker构建期间在主机上执行命令

问题描述

(只是一个建议)

通常,我们使用以下结构来构建docker映像:

my-image/
├── assets
│   ├── entrypoint.sh
│   └── install.sh
├── build.sh
├── Dockerfile
├── README.md
└── VERSION
  • :这是您应该调用的script_that_creates_magic_file.sh。其他常见任务包括下载所需文件或从主机临时复制ssh密钥。最后,此脚本将调用docker build .
  • :和往常一样,但是根据我们需要运行的命令数量,我们可能会有一个install.sh
  • :此文件可在容器中复制并运行,安装软件包,删除不必要的文件等。不确定100%-我认为这种方法减少了层数,避免了在单个命令中使用多个命令RUN
  • :容器的入口点。允许我们在容器启动时执行任务(例如解析环境变量)并打印调试信息

我发现上面的结构很方便且具有自说明性,因为团队中的每个人都可以构建任何图像(无特殊说明/步骤)。自述文件在那里解释图像在做什么…但是我不会对你说谎…它通常是空的…(或h1gitlab显示一个):)

解决方法

创建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位于同一目录中。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...