docker中的localhost – neo4j

我正在尝试创build一个设置neo4j实例的dockerfile。 目前我有以下几点:

FROM neo4j:3.0 MAINTAINER Andy CMD curl \ -H "Content-Type: application/json" \ -X POST -d '{"password":"mypassword"}' \ -u neo4j:neo4j http://localhost:7474/user/neo4j/password 

从这里开始,我build立图像并使用以下命令运行

 docker run -p 7474:7474 myimage 

虽然我能够访问我的主机上的localhost:4747上的neo4j面板,但是打算在容器中运行的curl命令无法访问它自己的localhost实例。

所以我想我的问题是,我正确地做到这一点,如何从容器内调用本地主机?

为了澄清,我不希望curl请求逃离容器 – 它应该与容器内部的neo4j进行通信。

也许你想使用环境variables$NEO4J_AUTH来控制authentication,如这里所解释的。

例如这个禁用身份validation

 docker run -p 7474:7474 -e NEO4J_AUTH=none -d neo4j:3.0 

您可能还需要检查neo4j:3.0映像的入口点脚本 ,如果给出的选项不够用,您可以创build自己的版本。

你的容器只能curl; 根据上面的Dockerfile,你并不是在容器内部启动neo4j,当然这在localhost上是不可用的。

如果您在另一个容器中运行它,则需要使用该容器的IP地址。

事实certificate,我设置密码的方法相当长。 在查看neo4j镜像的Dockerfile之后,我发现设置密码只需要我改变NEO4J_AUTH的环境variables, 如下所示:

 FROM neo4j:3.0 MAINTAINER Andy ENV NEO4J_AUTH neo4j/password