[英]Connect to Milvus standalone server (in docker container) from another docker container on the same host
当我在 docker 上以独立模式运行 Milvus 时(通过在默认的 Milvus docker-compose.yml 文件上执行 docker-compose,导致创建三个容器),我无法从同一主机上另一个 docker 容器中运行的任务连接到 Milvus 服务器. 我已经将这个容器配置为与 Milvus 服务器在同一个网络上,我可以通过 Milvus 服务器的 IP 从这个容器中 ping Milvus 服务器。
在我运行的任务容器中:
connections.connect(
alias="default",
host='192.168.192.4',
port='19530',
secure=False
)
错误日志显示:
Traceback (most recent call last):
File "task.py", line 45, in
secure=True
File "/usr/local/lib/python3.7/site-packages/pymilvus/orm/connections.py", line 262, in connect
connect_milvus(**kwargs, password=password)
File "/usr/local/lib/python3.7/site-packages/pymilvus/orm/connections.py", line 233, in connect_milvus
gh._wait_for_channel_ready()
File "/usr/local/lib/python3.7/site-packages/pymilvus/client/grpc_handler.py", line 118, in _wait_for_channel_ready
raise MilvusException(Status.CONNECT_FAILED, f'Fail connecting to server on {self._address}. Timeout')
pymilvus.exceptions.MilvusException: <MilvusException: (code=2, message=Fail connecting to server on 192.168.192.4:19530. Timeout)>
192.168.192.4 是 milvus-standalone 容器的 ip 地址。
原来这不是 Milvus 的问题。 问题是由我们的 corporate.network 和代理要求引起的。 在 dockerfile 中,我需要设置代理设置才能拉取图像。 但是,这会在构建期间为容器设置代理设置。 这些代理设置阻止了容器之间的通信。 需要在 dockerfile 中重置代理设置。修复如下所示:
FROM python:3.9.12
ENV https_proxy <proxy settings>
COPY requirements.txt /
RUN pip3 install --proxy <proxy settings> -r requirements.txt
COPY task.py /
ENV https_proxy ""
CMD ["python3", "-u", "task.py"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.