如何为多个进程创建docker工作流

时间:2019-04-30 22:15:25

标签: bash docker

我正在使用在不同Docker容器中处理的内容来执行许多与媒体相关的任务,我想获得有关如何创建简单,简化的工作流的一些指导。具体来说,我不确定何时使用外壳脚本以及何时使用Dockerfile。

常见的事件顺序是:

  1. 将输入视频转换为图像序列
  2. 处理图像序列
  3. 将处理后的图像转换回视频
  4. 将此视频保存到主机上

每个命令都使用不同的docker run命令运行。我想编写这些过程的脚本,这样我就不必每次都坐在命令行中输入docker run image_name etc. etc.

步骤1 如下运行:

docker run -v $PWD:/temp/ jrottenberg/ffmpeg -i /temp/$SRC_VIDEO_DIR/$FILENAME /temp/$OUTPUT_IMAGE_DIR/$OUTPUT_IMAGE_BASENAME%06d.bmp

第2步。按以下方式运行:

docker run -v $PWD/$OUTPUT_IMAGE_DIR:/notebook/raisr/test -v $PWD/$OUTPUT_LARGER_IMAGE_DIR:/notebook/raisr/results $DOCKER_IMAGE /bin/bash -c "source activate superres; cd /notebook/raisr; python test.py"

第3步。按以下方式运行:

docker run -v $PWD:/temp/ jrottenberg/ffmpeg -framerate $FPS -i /temp/$OUTPUT_IMAGE_DIR/$OUTPUT_IMAGE_BASENAME%06d.bmp -c:v qtrle -pix_fmt rgb24 /temp/output_video/$OUTPUT_FILENAME

最简单的方法似乎是使用其中的三个命令创建一个Shell脚本,然后运行该脚本。烦人的是,我每次都必须编辑shell脚本并更改视频文件的输入路径。在步骤2中也调用3个命令似乎并不常见。

我意识到我可以在Dockerfile中使用RUN选项来指定那些命令在构建docker文件时自动运行,但是可以通过Dockerfile装载卷并取出数据运行中的容器并给主机带来了很大的痛苦。其中的某些命令取决于本地安装的Docker映像,该映像具有特定名称(上述步骤2中的变量$DOCKER_IMAGE

所以:

  1. 如果您有多个docker run命令,每个命令彼此依赖,那么运行这些命令的正确,可扩展的方法是什么?

  2. 人们何时使用Shell脚本以及何时使用Dockerfile管理多个作业?

  3. 让Dockerfile运行可处理媒体的作业是一种好习惯,还是应该通过docker run命令从Shell脚本完成此工作?

    < / li>

0 个答案:

没有答案