Dockerpytesting容器在数据库可用之前超时?

我已经在Docker容器中加载了一个数据库(Neo4J),但是我认为我的unit testing在加载数据库之前碰到了容器。

def setUp(self): client = docker.from_env() self.container = client.containers.run("neo4j", detach=True, environment={'NEO4J_AUTH':'none'}, ports={7474:7474, 7687:7687}, volumes={'/Users/myuser/neo4j/data': {'bind': '/data', 'mode': 'rw'}} ) self.container.start() def test_database_loads(self): r = requests.get(self.database_url) self.assertEqual(r.status_code, 400) 

我得到这个错误:

 ====================================================================== ERROR: test_database_loads (backend.api.tests.test_base.BaseTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/aljabear/.pyenv/versions/visualist/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 386, in _make_request six.raise_from(e, None) File "<string>", line 2, in raise_from File "/Users/aljabear/.pyenv/versions/visualist/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 382, in _make_request httplib_response = conn.getresponse() File "/Users/aljabear/.pyenv/versions/3.5.3/lib/python3.5/http/client.py", line 1198, in getresponse response.begin() File "/Users/aljabear/.pyenv/versions/3.5.3/lib/python3.5/http/client.py", line 297, in begin version, status, reason = self._read_status() File "/Users/aljabear/.pyenv/versions/3.5.3/lib/python3.5/http/client.py", line 258, in _read_status line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") File "/Users/aljabear/.pyenv/versions/3.5.3/lib/python3.5/socket.py", line 576, in readinto return self._sock.recv_into(b) socket.timeout: timed out 

…等等。 基本上我的请求超时。

我觉得我的环境还行, 如果我离开容器运行,我可以稍后通过curl访问它。

我的直觉是,在Neo4J开始之前,我正在打包容器。 有没有办法迫使Dockerpy等到容器托pipe的脚本启动并运行?

谢谢