¿Cómo pasar argumentos dentro de docker-compose?


Docker 1.9 permite pasar argumentos a un archivo dockerfile. Ver enlace: https://docs.docker.com/engine/reference/builder/#arg

¿Cómo puedo pasar los mismos argumentos dentro de docker-compose?yml?
Sírvase dar también un ejemplo, si es posible.

Author: Vini.g.fer, 2015-12-17

3 answers

Esta característica se agregó en Compose 1.6.

Referencia: https://docs.docker.com/compose/compose-file/#args

services:
  web:
    build:
      context: .
      args:
        FOO: foo
 12
Author: dnephin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-17 22:36:52

Esto ahora se puede hacer a partir de docker-compose v2 + como parte del objeto build;

Docker-compose.yml

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

Ver la docker compose docs.

En el ejemplo anterior "var1" y "var2" se enviarán al entorno de compilación.

Nota: cualquier variable env (especificada usando el bloque environment) que tenga el mismo nombre que args variable(s) reemplazará esa variable.

 65
Author: tgallacher,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-10 23:42:29

Ahora docker-compose soporta la sustitución de variables.

Compose utiliza los valores de las variables del entorno de shell en el que se ejecuta docker-compose. Por ejemplo, supongamos que el shell contiene POSTGRES_VERSION=9.3 y usted proporciona esta configuración en su archivo docker-compose.yml:

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

Cuando ejecuta docker-compose up con esta configuración, Compose busca la variable de entorno POSTGRES_VERSION en el shell y sustituye su valor en. Para este ejemplo, Compose resuelve image a postgres:9.3 antes de ejecutar la configuración.

 55
Author: Hemerson Varela,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-18 22:55:27