2016-07-28 68 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