我有一个非常标准的码头工人,compose.yml,我需要以编程方式编辑数据库的密码。编辑泊坞窗,compose.yml与PyYAML
自YAML文件,我认为这将是简单的编辑和转储内容。 到目前为止,我尝试了PyYAML,它只是乱泊坞窗,撰写文件,我不知道为什么。
加载和倾倒相同的内容,它打破了结构。
内容泊坞窗,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"
这是我如何加载和倾倒内容:
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)
这是该文件的保存方式。
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'
有没有更好的方法来做到这一点?我错过了什么?
它是相似的,但不一样。转储中缺少端口映射“32768:32768”,因为PyYAML错误地忽略了重复键。 – Anthon
是的。我看到了2个端口......谢谢 –