2016-07-28 86 views
1

我想创建一个dockerfile,它建立一个neo4j实例。目前,我有以下几点:泊坞窗内的本地主机 - neo4j

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 

从这里,然后我建立的形象和运行使用下面的命令

docker run -p 7474:7474 myimage 

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

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

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

回答

1

也许你想使用环境变量$NEO4J_AUTH控制认证如解释here

例如,这禁用认证

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

您可能还需要检查泊坞窗neo4j:3.0图像的entrypoint script,这样就可以使你自己的版本,如果给出的选项是不够的,你。

+0

谢谢,这原来是解决方案,我在路上了解到dockerfiles – Andy

2

你的容器是只有正在运行卷曲;根据上面的Dockerfile,你并不是在容器内启动neo4j,所以它当然不在localhost上。

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

+0

基于此,你是说CMD会覆盖源图像CMD?我认为这个命令就像这个'source-run,source-cmd - > my-run,my-cmd' – Andy

+1

一个docker映像只能有一个'CMD'。如果在dockerfile中指定'CMD',则覆盖基本映像中存在的任何内容。 – larsks

+0

感谢您的信息! – Andy

1

事实证明,我设置密码的方法相当冗长。在Dockerfile寻找Neo4j的图像后,我发现,设置密码,只要求我改变环境变量NEO4J_AUTH像这样:

FROM neo4j:3.0 
MAINTAINER Andy 

ENV NEO4J_AUTH neo4j/password