web-dev-qa-db-fra.com

Comment passer des arguments dans docker-compose?

Docker 1.9 permet de passer des arguments à un fichier docker. Voir le lien: https://docs.docker.com/engine/reference/builder/#arg

Comment puis-je passer les mêmes arguments dans docker-compose.yml?
Veuillez donner un exemple aussi, si possible.

65
meallhour

Cette fonctionnalité a été ajoutée dans Compose 1.6.

Référence: https://docs.docker.com/compose/compose-file/#args

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

Cela peut maintenant être fait à partir de docker-compose v2 + dans le cadre de l'objet build;

docker-compose.yml

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

Voir le docker compose la documentation .

Dans l'exemple ci-dessus, "var1" et "var2" seront envoyés à l'environnement de construction.

Remarque: toute variable env (spécifiée à l'aide du bloc environment) portant le même nom que args variable (s) remplacera cette variable.

72
tgallacher

Maintenant, docker-compose prend en charge la substitution de variable.

Compose utilise les valeurs de variable de l'environnement Shell dans lequel docker-compose est exécuté. Par exemple, supposons que le shell contienne POSTGRES_VERSION=9.3 et que vous fournissiez cette configuration dans votre fichier docker-compose.yml:

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

Lorsque vous exécutez docker-compose up avec cette configuration, Compose recherche la variable d'environnement POSTGRES_VERSION dans le shell et substitue sa valeur. Pour cet exemple, Compose résout le image en postgres:9.3 avant d'exécuter la configuration.

67
Hemerson Varela