首页 > 解决方案 > 运行多个 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了多次,我可以只发出一次所有命令或其他更好的优化方式吗?

标签: postgresqlbashdocker

解决方案


您可以在命令中使用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

推荐阅读