web-dev-qa-db-fra.com

Comment passer une variable d'environnement à un menu fixe

J'essaie de faire fonctionner un conteneur. J'ai déjà l'image téléchargée sur le registre privé de Docker. Je veux écrire un fichier de composition pour télécharger et déployer l'image. Mais je souhaite transmettre le nom du TAG en tant que variable de la commande d'exécution docker-compose. Mon fichier de composition se présente comme ci-dessous. Comment puis-je transmettre la valeur de KB_DB_TAG_VERSION dans le cadre de la commande docker-compose up?

version: '3'
services:
   db:
    #build: k-db
    user: "1000:50"
    volumes:
      - /data/mysql:/var/lib/mysql
    container_name: k-db
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
    image:  XX:$KB_DB_TAG_VERSION
    image: k-db
    ports:
      - "3307:3306"
24
Abhi.G

Vous avez deux options:

  1. Créez le fichier . Env comme déjà suggéré dans un autre réponse .
  2. Préfixe KEY=VALUE paire (s) à votre docker-compose commande, par exemple:

    KB_DB_TAG_VERSION=kb-1.3.20-v1.0.0 docker-compose up
    

    L’exporter plus tôt dans un script devrait également fonctionner, par exemple:

    export KB_DB_TAG_VERSION=kb-1.3.20-v1.0.0
    docker-compose up
    
30
Jakub Kukul

Vous pouvez créer un fichier .env dans le répertoire où vous exécutez la commande docker-compose up (Et votre fichier docker-compose.yml Se trouve) avec le contenu suivant:

KB_DB_TAG_VERSION=kb-1.3.20-v1.0.0

Votre fichier docker-compose.yml Devrait ressembler à ceci (ajouté { Et }):

version: '3'
services:
   db:
     user: "1000:50"
     volumes:
       - /data/mysql:/var/lib/mysql
     container_name: k-db
     environment:
       - MYSQL_ALLOW_EMPTY_PASSWORD=yes
     image: XX:${KB_DB_TAG_VERSION}
     image: k-db
     ports:
       - "3307:3306"
6
Sebastian Brosch

Dans votre fichier docker-compose.yml, ajoutez

env_file:
  - .env_file

à votre service db où .env_file est votre fichier .env (changez son nom en conséquence).

version: '3'
services:
   db:
    #build: k-db
    user: "1000:50"
    volumes:
      - /data/mysql:/var/lib/mysql
    container_name: k-db
    env_file:
      - .env_file
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
    image:  XX:$KB_DB_TAG_VERSION
    image: k-db
    ports:
      - "3307:3306"
1
GiacomoLicari