我有一个docker应用程序,可以构建Postgres数据库。我在用毒药做Django测试。当我在本地机器中的docker映像上运行docker-compose run web tox
(我使用docker-compose up --build --force-recreate -d
构建docker映像)时,错误显示为:
E django.db.utils.OperationalError: could not connect to server: Connection refused E Is the server running on host "127.0.0.1" and accepting E TCP/IP connections on port 5432?
但当我运行唯一的tox命令(不是在我的docker图像上)时,它运行得很好。你知道吗
我尝试在没有tox的情况下运行Django测试,即在docker映像上使用docker-compose run web python manage.py test
。在这种情况下,它没有显示任何错误。我想我对码头工人的照片做毒物检测有点问题。你知道吗
这可能是由众所周知的事情引起的,即测试容器在DB容器完全运行之前启动。尽管您在docker compose dependency/link中设置了docker,但docker只会等待相关容器启动。如果DB初始化需要30秒,那么第二个容器将在这之前启动,您将看到这个问题。你知道吗
解决方案是在第二个容器上放置一些bash脚本,该脚本将ping DB端口,使其等待DB准备就绪。所以,有许多类似的问题,有一些很好的解决方案,如何使第二个容器等待依赖数据库。你知道吗
相关问题 更多 >
编程相关推荐