首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ArangoDBs python码头

ArangoDBs python码头
EN

Stack Overflow用户
提问于 2019-02-19 05:33:09
回答 1查看 153关注 0票数 0

使用Docker从Python初始化ArangoDB

尝试了不同的身份验证方法,始终得到“错误:数据库未初始化且未指定密码选项”。

不确定如何格式化/连接ArangoDB

代码语言:javascript
运行
复制
import docker
client=docker.from_env()
img=client.images.pull("arangodb:latest")
[31]:

arangocommand="-e ARANGO_RANDOM_ROOT_PASSWORD=1"
​
db=client.containers.run(img,command=arangocommand)

---------------------------------------------------------------------------
ContainerError                            Traceback (most recent call last)
<ipython-input-31-c5425f08f615> in <module>
      1 arangocommand="-e ARANGO_RANDOM_ROOT_PASSWORD=1"
      2 
----> 3 db=client.containers.run(img,command=arangocommand)

~/anaconda3/envs/dockerdb/lib/python3.7/site-packages/docker/models/containers.py in run(self, image, command, stdout, stderr, remove, **kwargs)
    793         if exit_status != 0:
    794             raise ContainerError(
--> 795                 container, exit_status, command, image, out
    796             )
    797 

ContainerError: Command '-e ARANGO_RANDOM_ROOT_PASSWORD=1' in image 'sha256:d41deeeb6f1189a07e3e567bd104c82b53350b67eaadbe044fae9c1158cd8c1c' returned non-zero exit status 1: b'error: database is uninitialized and password option is not specified \n  You need to specify one of ARANGO_ROOT_PASSWORD, ARANGO_NO_AUTH and ARANGO_RANDOM_ROOT_PASSWORD\n

寻找一种简单而健壮的方式从Python连接到Docker容器中的ArangoDB。然后,我怎样才能继续使用ArangoDB中的Python,而不必考虑它是在Docker容器中运行的。即

进口码头

然后继续只使用dockerpy库。

EN

回答 1

Stack Overflow用户

发布于 2019-02-19 06:22:30

根据docker-py 文档,有一个名为environment的参数,它应该处理在运行容器时应该在容器内传递的环境变量。

环境(dict或list) -在容器内设置环境变量,作为字典或字符串列表,格式为"SOMEVARIABLE=xxx“。

因此,您必须修改脚本如下:

代码语言:javascript
运行
复制
import docker

client=docker.from_env()

img=client.images.pull("arangodb:latest")
variables=["ARANGO_RANDOM_ROOT_PASSWORD=1"]
db=client.containers.run(img,environment=variables)

然后,在执行它之后,您可以检查容器的docker日志,这表明容器已经启动并正在运行。

代码语言:javascript
运行
复制
automatically choosing storage engine
===========================================
GENERATED ROOT PASSWORD: XXXXXXXXXXXXXXXX
===========================================
...
2019-02-19T06:22:31Z [1] INFO using storage engine rocksdb
2019-02-19T06:22:31Z [1] INFO {cluster} Starting up with role SINGLE
...
2019-02-19T06:22:31Z [1] INFO {authentication} Authentication is turned on (system only), authentication for unix sockets is turned on
2019-02-19T06:22:32Z [1] INFO using endpoint 'http+tcp://0.0.0.0:8529' for non-encrypted requests

关于command参数,它用于在运行容器时需要覆盖映像的原始CMD

命令(str或list) -要在容器中运行的命令。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54759446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档