问题描述
我有一个被docker化的python脚本,在该脚本中,我调用了ArangoDB。我还有另一个运行ArangoDB映像的容器。当我运行两个容器时,我可以在本地主机上访问ArangoDB,并且如果我从其容器外部运行python脚本,则可以成功调用ArangoDB。但是,当我从docker容器中运行脚本时,由于无法识别有服务器正在运行,因此无法连接到容器化的ArangoDB,我得到以下错误:
File "/usr/local/lib/python3.7/site-packages/arango/client.py",line 167,in db
raise ServerConnectionError('bad connection: {}'.format(err))
arango.exceptions.ServerConnectionError: bad connection: HTTPConnectionPool(host='127.0.0.1',port=8529): Max retries exceeded with url: /_db/dox/_api/collection (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f17a4db3450>: Failed to establish a new connection: [Errno
111] Connection refused'))
这是我的python脚本的dockerfile
FROM python:3.7-buster
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY . .
CMD [ "python","main.py" ]
这是我从python脚本调用ArangoDB的地方:
class ArangoDB():
def __init__(self,db,username,password):
"""
Creates an ArangoDB session and connects to a specified Arango database.
Parameters
----------
db : str
Arango database name
username : str
Arango database username
password : str
Arango database password
Returns
-------
An instance of ArangoDB API Wrapper
"""
logger.info(f'User {username} Connecting to database: {db}')
self._conn = ArangoClient()
self._db = self._conn.db(name=db,username=username,password=password,verify=True)
logger.info(f"Successfully connected to database: {db}")
最后,这是我的docker-compose.yml
version: "3.8"
services:
arangodb:
image: arangodb:latest
container_name: db
environment:
ARANGO_ROOT_PASSWORD: route66
ports:
- "8529:8529"
volumes:
- arangodb_data:/var/lib/arangodb3
- arangodb_apps_data:/var/lib/arangodb3-apps
python:
build: .
depends_on:
- arangodb
ports:
- "5000:5000"
container_name: myapp
networks:
default:
external:
name: back
volumes:
arangodb_data:
arangodb_apps_data:
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)