web-dev-qa-db-ja.com

docker-compose upとともに引数を渡す方法

docker-compose.ymlファイルがあり、ターミナルではtyping docker-compose up [something]ですが、docker-compose.ymlにも引数を渡したいです。これは可能ですか?補間変数について読んで、.ymlを使用して${testval}ファイルに変数を指定しようとしましたが、docker-compose up [something] var="test"を使用しましたが、次のエラーが表示されます。

警告:testval変数は設定されていません。デフォルトは空の文字列です。
エラー:そのようなサービスはありません:testval=test

14
BubbleTea

dnephin answer に基づいて、これを作成しました sample repo docker-compose upに変数を渡すことができます。

使い方は簡単です:

  • TEST= docker-compose upを使用して、appdbコンテナの両方を作成して起動します。これで、APIがポート3030のdockerデーモンで実行されているはずです。
  • TEST=DO docker-compose upを使用して、appdbコンテナの両方を作成して起動します。 APIはnpm run testファイル内でpackage.jsonを実行する必要があります。
  • $env:TEST="";docker-compose upを使用して、appdbコンテナの両方を作成して起動します。これで、APIがポート3030のdockerデーモンで実行されているはずです。
  • $env:TEST="do";docker-compose upを使用して、appdbコンテナの両方を作成して起動します。 APIはnpm run testファイル内でpackage.jsonを実行する必要があります。
15
Rafael Delboni

環境変数として変数を渡す必要があります。

testvar=test docker-compose up ...

または

export testvar=test
docker-compose up
9
dnephin

ここで何をしたいのかわかりませんが、環境変数を特定のコンテナに渡すことが必要な場合、docker-compose.ymlでそれを行うことができます:

web:
  ...
  environment:
    - Rails_ENV=production
    - VIRTUAL_Host=www.example.com
    - VIRTUAL_PORT=3011

この変数は、指定したコンテナに固有のものであり、コンテナ間で共有されません。

また、「docker-compose up」は引数を取りません。

3
TopperH

docker-compose引数を渡すためにフラグやコマンドを含めないでください。

Composeは主に、イメージを構築するのではなく、サービスを実行するためのツールです。引数には、すべてのdockerfileで定義されているARGを使用してみてください。

すべてのユニークなビルドシナリオをサポートすることはできません。なぜならdocker-composeはその目的のために設計されていません。実際にサポートできるのは、最も一般的なビルドシナリオのみです。

彼のトピックに関する詳細情報を見ることができます こちら

2
Hemerson Varela

docker-compose build --build-arg app_env=productionを使用して、イメージを構築できます。その後、docker-compose upを使用できます。これは、ビルドされたイメージに添付されます。

# docker-compose.yml    
services:
      service_name:
        build:
          context: .
          args:
          - app_env=development
....


# Dockerfile
...
ARG app_env
ENV RACK_ENV $app_env
RUN if [ ${APP_ENV} = production ]; run command; else run another command; fi
...

次に、コマンドラインに次のように入力します

docker-compose build --build-arg app_env=production
docker-compose up
1
Purkhalo Alex