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"
Vous avez deux options:
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
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"
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"