2016-01-29 22 views
7

Ho un file docker-compose.yml e nel terminale sono typing docker-compose up [something] ma vorrei anche passare un argomento a docker-compose.yml. È possibile? Ho letto sulle variabili di interpolazione e ho cercato di specificare una variabile nel file .yml utilizzando ${testval} e poi docker-compose up [something] var="test" ma ricevo il seguente errore:Come passare un argomento con docker-compose up

WARNING: The testval variable is not set. Defaulting to a blank string.
ERROR: No such service: testval=test

risposta

2

docker-compose non include alcun bandiera o di comando per passare gli argomenti .

Compose è principalmente uno strumento per i servizi di corsa, non per la costruzione di immagini. Provare a utilizzare ARG definito in ogni file di dock per gli argomenti.

Non sarà possibile supportare ogni scenario di costruzione univoco perché docker-compose non è progettato per tale scopo. puoi solo supportare gli scenari di costruzione più comuni.

È possibile visualizzare ulteriori informazioni sul suo argomento here.

5

è necessario passare le variabili come variabili d'ambiente:

testvar=test docker-compose up ... 

o

export testvar=test 
docker-compose up 
2

Non sono sicuro di ciò che si vuole fare qui, ma se quello che vi serve è quello di passare un variabile ambientale per un contenitore specifico docker-compose.yml ti permette di farlo:

web: 
    ... 
    environment: 
    - RAILS_ENV=production 
    - VIRTUAL_HOST=www.example.com 
    - VIRTUAL_PORT=3011 

Queste variabili essere specifici per il contenitore in cui li hai specificati e non essere condivisi tra i contenitori.

Anche "docker-compose up" non accetta argomenti.

7

In base a dnephin answer, ho creato questo sample repo che è possibile passare una variabile alla finestra mobile-comporre.

L'utilizzo è semplice:

MAC/LINUX
  • TEST= docker-compose up per creare e avviare sia il contenitore app e db. L'API dovrebbe quindi essere in esecuzione sul daemon della docker sulla porta 3030.
  • TEST=DO docker-compose up per creare e avviare sia il contenitore app e db. L'API deve eseguire npm run test all'interno del file package.json.
WINDOWS (PowerShell)
  • $env:TEST="";docker-compose up per creare e avviare sia il contenitore app e db. L'API dovrebbe quindi essere in esecuzione sul daemon della docker sulla porta 3030.
  • $env:TEST="do";docker-compose up per creare e avviare sia il contenitore app e db. L'API deve eseguire npm run test all'interno del file package.json.
Problemi correlati