docker composeに引数を渡す

私のdocker composeファイルの中には、実行中に生成したいダイナミックフィールドがあります。実際には、それは文字列テンプレートです。

environment:
    - SERVER_URL:https://0.0.0.0:${PORT}

そして、この`PORTパラメータを動的に設定したいのです。

docker-compose run <service> PORT=443

ドキュメント]1には、私が使用できると思われる ARGS パラメータセットがあります。しかし、それらをどのようにしてコンポーズファイルの中で使用するのかについての情報はありません。

docker-composeでは、引数はdockerfileの中でのみ利用可能であり、有効です。以下のように、先のレベルで何をしているかを指定することができます。

#dockerfile
ARG PORT
ENV SERVER_URL "https://0.0.0.0:$PORT"

ポートはdocker-compose.ymlで設定できます。

build:
  context: .
  args:
    - PORT=443

いずれにしても、これは環境変数です。もしそれが適切であれば、runコマンドで渡すことができます。

PORT=443 docker-compose run 
#or
docker-compose run  -e PORT=443
解説 (2)

このフラグは、docker-compose buildの際に使用することができます。

docker-compose build --build-arg PRODUCTION=VALUE

Dockerfileでは、引数PRODUCTIONを取得できます。

# Dockerfile
ARG PRODUCTION
FROM node:latest
解説 (0)

これは、stack deployで可能です。

環境セクションのコンポーズファイルの例。

- MY_VARIABLE_NAME=${MY_VARIABLE_VALUE}

Stack Deploy Command (WindowsのGitbashから実行しました)。

MY_VARIABLE_VALUE=some-value docker stack deploy --compose-file compose_file_here stackname

となっています。

**参考にしてください。 このGithubの投稿を参照してくださいここ

解説 (0)