繁体   English   中英

如何自动化Docker在容器中运行脚本并通知主机完成?

[英]How to automate docker to run script within container and notify completion to host?

我想通过以下步骤来自动化应用程序的构建过程:

  1. 启动具有所有依赖项和脚本的build-system容器,以使应用程序最终运行。
  2. 在构建系统容器中,启动一个bash脚本以启动构建过程。
  3. 构建完成后,通过使用docker cp或在启动容器时附加卷将exe传输到主机。
  4. 将exe传输到新的dist-system容器,该容器本质上是将存储在Docker Hub中的最终映像。
  5. 在dist系统中安装应用程序,通过在该容器中触发另一个bash脚本进行自定义配置。
  6. 第5步完成后,回到主机并运行dist-system容器的docker commit ,然后docker push从主机将映像docker push送到Docker Hub。

我的问题特别涉及第3点和第6点,在这里我需要知道bash脚本已在容器内完成执行。 只有这样,我才想在主机中触发docker命令。 有没有一种方法可以通知Docker在容器内执行bash脚本的情况?

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将会创建。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM