我正在尝试使用ansible和docker来备份我的MySQL数据库。这是我的ansible-task:
docker_container:
name: "{{ mysql_dump_container_name }}"
image: mysql:8.0.20
env:
MYSQL_ROOT_PASSWORD: "{{ mysql_password }}"
MYSQL_DATABASE: "{{ mysql_database }}"
ports:
- "3307:3307"
volumes:
- "{{ mysql_backup_dir }}:/backup"
entrypoint: "mysqldump -u {{ mysql_username }} -p{{ mysql_password }} --host {{ mysql_host }} {{ mysql_database }} > 1.sql "
detach: yes
restart_policy: "unless-stopped"
become: yes我收到以下错误:
mysqldump: Couldn't find table: ">"入口点消息为:
"entrypoint": [
"mysqldump -u root -proot --host wl.cs.net TEST > 1.sql"
],我做错了什么?
发布于 2021-08-06 06:59:22
实际上,您不需要覆盖entrypoint,因为容器中已经存在的as将运行您的命令。您只需要确保>最终出现在正确的位置。我通过引用命令来做到这一点。
您可以这样做:
docker_container:
name: "{{ mysql_dump_container_name }}"
image: "mysql:8.0.20"
volumes:
- "{{ mysql_backup_dir }}:/backup"
command: "/bin/sh -c 'mysqldump -u {{ mysql_username }} -p{{ mysql_password }} --host {{ mysql_host }} {{ mysql_database }} > /backup/1.sql'"
detach: false
cleanup: true
become: yes其他注意事项:
port,因为容器没有侦听任何内容。env,因为您不是在创建数据库。restart_policy: "unless-stopped",因为重新启动失败的备份没有意义,因为它可能会再次失败。(您需要找出失败的原因,首先)detach: false,因此ansible将等待容器完成,如果备份失败,则显示failed。cleanup: true,因此您不需要手动清理容器。链接:
https://stackoverflow.com/questions/68671452
复制相似问题