2015-12-22 24 views

risposta

4

Per quanto riguarda docker-compose variable substitution, può dipendere da come NUM è stata impostata.
set NUM=5 impostarlo solo nella shell corrente, non per un altro processo.
Assicurarsi di digitare:

export NUM=5 
+0

La domanda si riferisce al meccanismo di sostituzione delle variabili di compose, che usa le variabili dall'host, non dal contenitore. –

+0

@AdrianMouat Oh ... intendi https://github.com/docker/compose/blob/ea8cc1c3dc47c9ed3bff56c5a8d99175b57af650/docs/compose-file.md#variable-substitution – VonC

+0

@AdrianMouat Ho riscritto la risposta di conseguenza. – VonC

1

È menzionato nel docs:

È possibile utilizzare un $$ (doppio segno di dollari) quando la configurazione ha bisogno di un letterale segno dollaro. Ciò impedisce inoltre a Compose di interpolare un valore , quindi un $$ consente di fare riferimento alle variabili di ambiente che non si desidera elaborare da Compose.

web: 
    build: . 
    command: "$$VAR_NOT_INTERPOLATED_BY_COMPOSE" 

Se si dimentica e si utilizza un unico simbolo del dollaro ($), Compose interpreta il valore come variabile di ambiente e vi avviserà:

La VAR_NOT_INTERPOLATED_BY_COMPOSE non è impostato. Sostituendo una stringa vuota .

Secondo questa, la linea 03 del file composizione dovrebbe essere:

command: echo $$NUM 
1

Oltre a $$ soluzione fornita da @ Ayman-nedjmeddine sopra è anche necessario fare in seguito, per rendere variabili di shell disponibile in composizione si hanno due opzioni

Opzione 1

  • accedere come root, impostare la variabile ed eseguire finestra mobile-comporre
  • root> export NUM = 5
  • root> finestra mobile-comporre up

Opzione 2

  • uso sudo -E dalla shell di un utente, -E propagherà utente shell env per sudo,
  • fornire accesso su su docker/docker-comporre
  • aggiungere :SETENV: al comando nel file sudoer per utilizzare -E opzione sudo
  • esempio:

    sudo visudo -f /etc/sudoers.d/docker-compose 
        ALL ALL=(ALL:ALL) NOPASSWD:SETENV: /usr/local/bin/docker-compose 
    sudo visudo -f /etc/sudoers.d/docker 
        ALL ALL=(ALL:ALL) NOPASSWD:SETENV: /usr/bin/docker 
    
  • finalmente utilizzare

    user1>export NUM=5 
    user1>sudo -E docker-compose up 
    
Problemi correlati