web-dev-qa-db-ja.com

docker-compose内で引数を渡す方法は?

Docker 1.9では、引​​数をdockerfileに渡すことができます。リンクを参照してください: https://docs.docker.com/engine/reference/builder/#arg

Docker-compose.yml内で同じ引数を渡すにはどうすればよいですか?
可能であれば、例を提供してください。

60
meallhour

この機能はCompose 1.6で追加されました。

リファレンス: https://docs.docker.com/compose/compose-file/#args

services:
  web:
    build:
      context: .
      args:
        FOO: foo
21
dnephin

これは、buildオブジェクトの一部としてdocker-compose v2 +の時点で実行できます。

docker-compose.yml

version: '2'
services:
    my_image_name:
        build:
            context: . #current dir as build context
            args:
                var1: 1
                var2: c

docker compose docs を参照してください。

上記の例では、「var1」と「var2」がビルド環境に送信されます。

注:environment変数と同じ名前を持つenv変数(argsブロックを使用して指定)は、その変数をオーバーライドします。

68
tgallacher

現在、docker-composeは変数置換をサポートしています。

Composeは、docker-composeが実行されているシェル環境の変数値を使用します。たとえば、シェルにPOSTGRES_VERSION=9.3が含まれており、この構成をdocker-compose.ymlファイルで指定するとします。

db:
  image: "postgres:${POSTGRES_VERSION}"

この構成でdocker-compose upを実行すると、ComposeはシェルでPOSTGRES_VERSION環境変数を探し、その値を代入します。この例では、構成を実行する前にComposeがimagepostgres:9.3に解決します。

65
Hemerson Varela