bugfix> docker > 投稿

どうすれば docker-compose を実行できますかベース docker-compose.yml およびdocker-composeファイルのディレクトリ全体。

私がこのディレクトリ構造を持っていた場合のように:

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

作成を実行するときに実行するマニフェストのフォルダーを指定するにはどうすればよいですか?

回答 2 件
  • 私はあなたの質問をよく理解したいと思います。
    あなたは -f を使うことができます  フラグ: docker-compose -f docker-compose1.yml  

    編集 
      あなたのコメントに答えるには:いいえ、 docker-compose はできません  コマンドが1つだけの複数のファイル。ディレクトリパスではなく、ファイルパスを指定する必要があります。
    次のようなシェルスクリプトを作成します。

    #!/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 のすべてのファイルで 。

    (ドキュメント)

  • 私の最良の選択肢は、 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
    
    

あなたの答え