首页 > 解决方案 > 参数化 docker exec psql -c 命令

问题描述

我有这个脚本,其中包含一些命令,例如:

sudo docker exec $container psql -U postgres -c "CREATE DATABASE $gisdb ;"

$container参数没问题,但我无法通过命令中的$gisdb参数读取正确的值。CREATE DATABASE是否有可能以任何其他方式或我需要重新设计此命令或使用硬编码值?

标签: dockerparameter-passingpsql

解决方案


数据库名称

根据PostgreSQL Documentation,创建数据库需要数据库的名称

CREATE DATABASE _姓名_

因此,$gisdb在您的代码中 - 是创建的数据库的名称。你可以硬编码这个名字,但你应该确切地知道 -你硬编码了哪个名字。

因为,通常,其他服务取决于数据库名称。因此,请检查您的代码手册。

摆脱sudo

您可以在命令sudo之前省略。docker只需将当前用户添加到docker组中:

usermod -aG docker $USER

然后,登录后,您将能够在docker没有sudo


推荐阅读