J'ai un docker-compose.yml assez standard et j'ai besoin de modifier le mot de passe de la base de données par programme.Édition docker-compose.yml avec PyYAML
Depuis son fichier YAML, j'ai pensé qu'il serait simple d'éditer et de vider le contenu. Jusqu'ici, j'ai essayé le PYYAML et il ne fait que gâcher le fichier docker-composer et je ne sais pas pourquoi.
Chargement et vidage du même contenu, cela casse la structure.
Contenu du docker-compose.yml:
version: '2'
services:
web:
container_name: xxx
ports:
- "80:80"
volumes:
- .:/xxx
depends_on:
- mysql
build: .
mysql:
ports:
- "32768:32768"
- "3306:3306"
container_name: xxx-mysql
restart: always
image: mariadb:latest
environment:
MYSQL_ROOT_PASSWORD: 'thiswillbechangeonsetupscript'
MYSQL_DATABASE: 'xxxdb'
volumes:
- ./database:/var/lib/mysql
ports:
- "3306:3306"
Voici comment je charge le dumping et le contenu:
import yaml
with open("docker-compose.yml", 'r') as ymlfile:
docker_config = yaml.load(ymlfile)
with open("docker-compose.yml", 'w') as newconf:
yaml.dump(docker_config, newconf)
Et voici comment le fichier est enregistré.
services:
mysql:
container_name: xxx-mysql
environment: {MYSQL_DATABASE: xxxdb, MYSQL_ROOT_PASSWORD: thiswillbechangeonsetupscript}
image: mariadb:latest
ports: ['3306:3306']
restart: always
volumes: ['./database:/var/lib/mysql']
web:
build: .
container_name: xxx
depends_on: [mysql]
ports: ['80:80']
volumes: ['.:/xxx']
version: '2'
Y a-t-il une meilleure façon de procéder ?! Qu'est-ce qui me manque?
Il est similaire, mais pas identique. Le mappage de port "32768: 32768" est manquant dans le vidage en raison des clés dupliquées que PyYAML ignore par erreur. – Anthon
Oui. j'ai vu les 2 ports ... merci –