当前位置: 首页 > 面试题库 >

Docker等待PostgreSQL运行

封弘伟
2023-03-14
问题内容

我在项目中将Django与PostgreSQL一起使用。我把它们放在不同的容器中,问题是我需要在运行django之前等待postgres。这时我正在用sleep 5django容器的command.sh文件执行此操作。我还发现netcat可以解决问题,但是我更喜欢没有附加软件包的方法。curl和wget无法执行此操作,因为它们不支持postgres协议。有办法吗?


问题答案:

您的解决方案tiziano的问题是,默认情况下未安装curl,我想避免安装其他东西。无论如何,我做了贝雷亚尔所说的。这是脚本,如果有人需要的话。

import socket
import time
import os

port = int(os.environ["DB_PORT"]) # 5432

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
while True:
    try:
        s.connect(('myproject-db', port))
        s.close()
        break
    except socket.error as ex:
        time.sleep(0.1)


 类似资料:
  • 我在网上搜索了很多关于vs await async,但是在这个特定的使用场景中,我并不真正理解其中的区别。我相信情况很简单。 vs. 其中,是一个异步方法,其中包含一些异步调用,例如使用wait调用db。 问题: 在这种情况下,两者之间有什么区别吗?任何帮助或意见,谢谢!

  • 使用asyn/wait vs wait有什么区别task.run() 等待任务。运行示例- 异步等待示例-

  • 注意:——如果你不喜欢sudo,可以查看非root用户使用 在Docker中安装PostgreSQL 如果Docker Hub中没有你需要的Docker镜像,你可以创建自己的镜像,开始先创建一个Dockerfile: 注意:这个PostgreSQL仅设置用途。请参阅PostgreSQL文档来调整这些设置,以便它是安全的。 # # example Dockerfile for http://docs

  • 问题内容: 在容器内运行服务时,假设使用mongodb命令 将立即退出,并返回容器ID。在我的CI脚本中,我在运行mongo容器之后立即运行客户端以测试mongodb连接。问题是:由于服务尚未启动,客户端无法连接。除了在脚本中添加大字体外,我看不到任何等待容器启动并运行的选项。 Docker的命令在这种情况下不起作用,因为该容器不存在。是docker的限制吗? 问题答案: 如在docker 1.1

  • 在Docker中安装PostgreSQL 如果Docker Hub中没有你需要的Docker镜像,你可以创建自己的镜像,开始先创建一个Dockerfile: 注意:这个PostgreSQL仅设置用途。请参阅PostgreSQL文档来调整这些设置,以便它是安全的。 # # example Dockerfile for http://docs.docker.com/examples/postgresq

  • 我正在尝试将数据库调用移出控制器,以清理并使其可测试。当它们在控制器中时,一切都会顺利进行。我将它们移出控制器,并添加了一个异步,以确保我们等待。否则,我将调用的中的函数。现在,一旦我使用async/await,控制器中的函数就会认为没有用户,因为它没有等待。 有几个关于异步等待的SO问题,但我没有找到一个解决我的问题。我确实验证了返回了我的用户,并添加了控制台日志来显示路径。 节点猫鼬异步等待似