postgresql - 运行多个 docker 命令的更好方法
问题描述
我的数据库有一个 docker 容器。让我们称之为my_pgdb
。我正在编写一个脚本,在该脚本中我逐个发出多个命令,即,
docker exec -i my_pgdb pg_dump --schema-only -U my_user my_db > schema.sql
docker exec -i my_pgdb dropdb -U my_user "${db_name}_my_db" || true
docker exec -i my_pgdb createdb -U my_user "${db_name}_my_db"
cat schema.sql | docker exec -i my_pgdb psql -U my_user "${db_name}_my_db"
有没有更好的方法将这些命令合并为 1?我的意思是我做docker exec
了多次,我可以只发出一次所有命令或其他更好的优化方式吗?
解决方案
您可以在命令中使用heredoc ,如下所示:sh
docker exec -i my_pgdb sh <<-EOF
pg_dump --schema-only -U my_user my_db > schema.sql
dropdb -U my_user "${db_name}_my_db" || true
createdb -U my_user "${db_name}_my_db"
psql -U my_user "${db_name}_my_db" < schema.sql
EOF
推荐阅读
- c# - 如何在 C# winform 的文本框中用逗号 (,) 分隔数字?
- postgresql - 将选择结果作为参数传递
- python - python 是否有任何用于迭代器的内置或标准库前瞻机制?
- android - 如何正确地将库模块依赖项添加到 Flutter Plugin 的 Android 文件夹中?
- python - Python 如何在 API 调用中使用更新 id 并迭代直到收集到所有数据
- r - 带有空字符的R字符串
- javascript - 是否有适当的方法将 PHP 实体共享到 ECMAScript 以便在双方都有 IDE 自动完成功能
- c++ - 模板声明是否仅适用于它们之前立即声明的函数
- excel - 仅当下一个列字段为空时,VBA excel 才更新字段
- php - 为什么我在 php 中的添加总是在我的数据库的列中更新 2