我想通过以下步骤来自动化应用程序的构建过程:
build-system
容器,该容器具有用于生成应用程序最终exe的所有依赖项和脚本。docker cp
或在启动容器时附加卷将exe传输到主机。dist-system
容器中,该容器实际上是将存储在Docker集线器中的最终映像。docker commit
,然后将映像从主机docker push
从Docker集线器传输到Docker集线器。我的问题特别涉及第3点和第6点,在这里我需要知道bash脚本已在容器内完成执行。只有这样,我才想在主机中触发docker命令。有没有一种方法可以通知docker在容器内执行bash脚本的情况?
答案 0 :(得分:2)
docker run
是同步的,默认情况下将阻塞直到docker容器退出。
例如,如果build-system
Dockerfile如下所示:
FROM alpine:latest
COPY ./build.sh /build.sh
VOLUME /data
CMD ["/build.sh", "/data/test.out"]
使用build.sh
如下:
#!/bin/sh
sleep 5
echo "Hello world!" >> "$1"
exit 0 # docker run will exit with this code, you can use this to check if your build was successful
运行docker run --rm -v /your/work/directory/build-output:/data build-system
将等待5秒钟,然后退出,并且/your/work/directory/build-output/test.out
已创建。