如何使用基础docker-compose
和整个目录的docker-compose文件运行docker-compose.yml
。
就像我有这个目录结构一样:
parentdir
docker-compose.yml
folder1/
foo.yml
bar.yml
folder2/
foo.yml
other.yml
如何在运行撰写时指定要运行的清单文件夹?
答案 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|...]