Est-il possible de passer des variables d'environnement personnalisées au conteneur Docker ?

Certaines bibliothèques clientes, comme GitHub - googleapis/google-auth-library-ruby: Google Auth Library for Ruby · GitHub, exigent que les informations d’identification d’authentification soient définies en tant que variables d'environnement. Est-il possible de les transmettre via le fichier yml ?

J’ai essayé :

  1. D’ajouter export VAR=VALUE dans la section des commandes personnalisées du fichier yml.
  2. D’ajouter VARIABLE: VALUE dans la section env du fichier yml.

@merefield m’a fait remarquer que c’est en effet possible.

Dans la section des commandes personnalisées, faites :

# ajoute la variable au fichier .bashrc
exec: echo 'export VAR=value' >> ~/.bashrc
...
# recharge le fichier
exec: source ~/.bashrc

Je peux confirmer que cette approche fonctionne effectivement. :slight_smile:

p.s.
D’une manière ou d’une autre, source ~/.bashrc ne met pas à jour l’environnement. Peut-être est-il appelé trop tôt.

J’ai aussi essayé :
- exec: /bin/bash -c "source ~/.bashrc"

Ne pouvez-vous pas utiliser la section env: de la définition du conteneur pour cela ? Cela devrait créer une variable d’environnement accessible par l’application Rails.

Par exemple :

env:
  CUSTOM_ENV: "value"

Sinon, il semble que pups redirige déjà les variables d’environnement de l’hôte également.

Cela me donne une erreur liée à Docker. Ce serait très intuitif si cela fonctionnait ainsi. :slight_smile: Ou alors je deviens fou. Je pense qu’il existe une règle pour accepter les variables personnalisées commençant par DISCOURSE_.

Je vais essayer la chose de l’environnement une fois de plus quand j’arriverai à mon bureau demain.

Donc, j’étais fou. Cela fonctionne parfaitement. Le problème était dû à une valeur sur plusieurs lignes. Je l’ai supprimée et la compilation a réussi. Mais la question est : comment utiliser des valeurs sur plusieurs lignes ?

Yuhoo, j’ai réussi à faire fonctionner. Le problème venait du fait que j’utilisais une clé privée RSA comme variable d’environnement. Voici ce qu’il faut faire pour que cela fonctionne.

Entourez votre clé de guillemets simples '' et ajoutez un \ supplémentaire à chaque \n présent dans la clé. Par exemple, \n deviendra \\n.

Juste pour info, il existe des moyens plus simples de faire cela que de mettre à jour tous les \n directement.

Quelque chose comme ceci :

key: |
  ---BEGIN SECRET KEY---
  SHH ne lisez pas ceci, c'est secret
  ---END SECRET KEY---

Voulez-vous dire coller la partie centrale de la clé telle quelle ? Ce serait un peu plus propre.

Je veux dire que YAML prend en charge les chaînes multilignes en commençant par le caractère | (et ses variantes optionnelles)

Vous pouvez ensuite coller la clé telle quelle sans modification (à part les espaces en préfixe).

J’ai essayé une chose stupide : j’ai ajouté | et un vrai saut de ligne à la place de chaque \n, ce qui n’a pas fonctionné.