È possibile passare variabili d'ambiente personalizzate al container Docker?

Alcune librerie client, come GitHub - googleapis/google-auth-library-ruby: Google Auth Library for Ruby · GitHub, richiedono che le credenziali di autenticazione siano impostate come variabili di ambiente. È possibile passarle tramite il file yml?

Ho provato:

  1. Aggiungere export VAR=VALUE alla sezione dei comandi personalizzati del file yml.
  2. Aggiungere VARIABLE: VALUE alla sezione env del file yml.

@merefield mi ha fatto notare che è effettivamente possibile.

Nella sezione dei comandi personalizzati, esegui:

# aggiunge la variabile al file .bashrc
exec: echo 'export VAR=value' >> ~/.bashrc
...
# ricarica il file
exec: source ~/.bashrc

Posso confermare che questo approccio funziona effettivamente. :slight_smile:

p.s.
In qualche modo source ~/.bashrc non aggiorna l’ambiente. Forse viene chiamato troppo presto.

Ho anche provato:
- exec: /bin/bash -c "source ~/.bashrc"

Non puoi usare la sezione env: della definizione del container per questo? Dovrebbe creare una variabile d’ambiente a cui l’app Rails può accedere.

Quindi tipo

env:
  CUSTOM_ENV: "value"

In caso contrario, sembra che pups passi già le variabili d’ambiente dall’host, anch’esso.

Questo mi dà un errore relativo a Docker. Sarebbe molto intuitivo se funzionasse così. :slight_smile: O sono pazzo. Credo ci sia una regola per accettare variabili personalizzate che iniziano con DISCOURSE_.

Domani, quando sarò alla mia scrivania, proverò di nuovo la cosa relativa all’env.

Quindi, ero impazzito. Funziona perfettamente. Il problema era dovuto a un valore su più righe. L’ho rimosso e la build è andata a buon fine. Ma la domanda è: come si usano i valori su più righe?

Yuhoo, sono riuscito a farlo funzionare. Il problema era che stavo usando una chiave privata RSA come variabile d’ambiente. Ecco cosa è necessario fare per farlo funzionare.

Racchiudi la tua chiave tra virgolette singole '' e aggiungi una \ extra a ogni \n presente nella chiave. Ad esempio, \n diventerebbe \\n.

Solo per farti sapere, ci sono modi più semplici per farlo rispetto all’aggiornamento diretto di tutti gli \n.

Qualcosa del genere:

key: |
  ---BEGIN SECRET KEY---
  SHH non leggere, questo è segreto
  ---END SECRET KEY---

Intendi incollare la parte centrale della chiave così com’è? Sarebbe un po’ più pulito.

Voglio dire che YAML supporta le righe multiple a partire dal carattere | (con variazioni opzionali)

Puoi quindi incollare la chiave così com’è, senza modifiche (a parte gli spazi iniziali).

Ho provato una cosa stupida: ho aggiunto | e un vero a capo invece di ogni \n, ma non ha funzionato.