Postgresql 在旋转docker容器之前创建数据库
我有一个docker compose文件,其中包含一个应用程序容器和一个postgres容器 appone依赖于postgres容器 我希望在应用程序容器开始连接到postgres并运行脚本在那里创建数据库之前。在docker compose中如何执行此操作?有什么方法可以在依赖关系中运行某些东西吗?< /P> 或者,我应该在部署阶段通过ssh连接到服务器,上下运行docker compose时执行此操作。通过这种方式,我还需要在服务器中安装psql。我更喜欢第一个 你能给我指一下正确的方向吗 我希望在应用程序容器开始连接到postgres并运行脚本在那里创建数据库之前 您可以通过将(SQL)脚本装入Postgres容器的Postgresql 在旋转docker容器之前创建数据库,postgresql,docker,docker-compose,gitlab,devops,Postgresql,Docker,Docker Compose,Gitlab,Devops,我有一个docker compose文件,其中包含一个应用程序容器和一个postgres容器 appone依赖于postgres容器 我希望在应用程序容器开始连接到postgres并运行脚本在那里创建数据库之前。在docker compose中如何执行此操作?有什么方法可以在依赖关系中运行某些东西吗?< /P> 或者,我应该在部署阶段通过ssh连接到服务器,上下运行docker compose时执行此操作。通过这种方式,我还需要在服务器中安装psql。我更喜欢第一个 你能给我指一下正确的方向吗
/docker entrypoint initdb.d
文件夹(请参阅–初始化脚本)来实现类似的功能。这样,您的应用程序就不必连接到PostgreSQL容器,但容器可以自己完成所有操作
不过,这里的一个常见问题是,您的应用程序可能会在准备接受连接之前立即尝试连接到PostgreSQL,从而导致应用程序崩溃。您可以通过在应用程序中实现一些try-catch机制以等待PostgreSQL就绪,或者更改应用程序容器的入口点来避免这种情况,即
sleep 10&&[运行您的应用程序]
通过声明环境变量POSTGRES\u DB
可以告诉POSTGRES在启动时创建一个空数据库并使用env vars名称
version: '3.5'
services:
db:
image: postgres:11.2-alpine
restart: always
environment:
POSTGRES_DB: myDB
POSTGRES_PASSWORD: myPassword
POSTGRES_USER: myUser
其中一个答案对你有帮助吗?如果是,请接受并结束问题。否则,我们将尽力进一步帮助您。