包括docker-compose文件的目录

时间:2018-05-25 09:11:39

标签: docker docker-compose

如何使用基础docker-compose和整个目录的docker-compose文件运行docker-compose.yml

就像我有这个目录结构一样:

parentdir
    docker-compose.yml
    folder1/
        foo.yml
        bar.yml
    folder2/
        foo.yml
        other.yml

如何在运行撰写时指定要运行的清单文件夹?

3 个答案:

答案 0 :(得分:1)

我希望我能理解你的问题。
您可以使用-f标志: docker-compose -f docker-compose1.yml

修改
回答你的评论:不,你只能用一个命令来docker-compose几个文件。您需要指定文件路径,而不是目录路径。
你可以做的是创建一个shell脚本,如:

#!/bin/bash

DOCKERFILE_PATH=$DOCKER_PATH

for dockerfile in $DOCKERFILE_PATH
do
  if [[ -f $dockerfile ]]; then
    docker-compose -f $dockerfile
  fi;
done

通过调用它来DOCKER_PATH=dockerfiles/* ./script.sh,它会对docker-compose -f中的每个文件执行DOCKER_PATH

docs

答案 1 :(得分:0)

我最好的选择是在我的项目的基本目录中有一个run.bash文件。

然后我将所有撰写的文件放在说compose/目录中,然后使用此命令运行它:

docker-compose $(./run.bash) up

run.bash

#!/usr/bin/env bash

PROJECT_NAME='projectname'     # need to set manually since it normally uses current directory as project name
DOCKER_PATH=$PWD/compose/*
MANIFESTS=' '

for dockerfile in $DOCKER_PATH
do
    MANIFESTS="${MANIFESTS} -f $dockerfile"
done

MANIFESTS="${MANIFESTS} -p $PROJECT_NAME"

echo $MANIFESTS

答案 2 :(得分:0)

您可以通过对每个文件使用 -f 将多个文件传递给 docker-compose。比如你有N个文件,你可以按如下方式传递它们:

docker-compose -f file1 -f file2 ... -f fileN [up|down|pull|...]

如果您在子目录中有文件并且希望将它们递归地传递给 docker-compose,您可以使用以下命令:

docker-compose $(for i in $(find . -type f | grep yaml)
do
echo -f $i
done
) [up|down|pull|...]