2016-07-28 15 views
1

Ich versuche eine Dockerdatei zu erstellen, die eine neo4j-Instanz einrichtet. Zur Zeit habe ich die folgenden: mit dem folgenden BefehlLocalhost in docker - neo4j

docker run -p 7474:7474 myimage 

Während ich bin in der Lage, um das Neo4j Panel auf localhost:4747 auf meinem Host-Maschine

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 

Von hier aus habe ich dann das Bild erstellen und ausführen Der Befehl curl, der innerhalb des Containers ausgeführt werden soll, kann nicht auf seine eigene localhost-Instanz zugreifen.

Also meine Frage ist, mache ich das richtig und wie nennt man localhost aus einem Container?

Nur um zu klären, ich möchte nicht die Curl-Anfrage aus dem Container zu entkommen - es sollte mit Neo4j aus dem Inneren des Containers kommunizieren.

Antwort

1

Vielleicht die Umgebungsvariable Sie verwenden $NEO4J_AUTH die Authentifizierung steuert wie erklärt here.

Zum Beispiel diese deaktivieren Authentifizierung

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

Sie können auch die entrypoint script des Docker neo4j:3.0 Bild überprüfen möchten, so können Sie Ihre eigene Version machen können, wenn die gegebenen Möglichkeiten für Sie nicht ausreichen.

+0

Danke, das stellte sich als Lösung heraus und ich lernte unterwegs Dockerfiles kennen – Andy

2

Ihr Container ist nur läuft curl; basierend auf Ihrer Dockerfile oben, starten Sie nicht neo4j innerhalb des Containers, so dass es natürlich nicht auf localhost verfügbar ist.

Wenn Sie es in einem anderen Container ausführen, müssen Sie die IP-Adresse des Containers verwenden.

+0

Basierend darauf, sagen Sie, dass CMD das Quellbild CMD überschreiben wird? Ich nahm an, dass die Reihenfolge wie folgt war: quelle-run, source-cmd -> mein-run, my-cmd' – Andy

+1

Ein Docker-Bild kann nur ein einziges 'CMD' haben. Wenn Sie 'CMD' in Ihrer Dockerdatei angeben, überschreiben Sie alles, was im Basisbild vorhanden war. – larsks

+0

Danke für die Info! – Andy

1

Es stellt sich heraus, dass mein Ansatz, das Passwort zu setzen, ziemlich lang war. am Dockerfile für das Neo4j Bild nach der Suche, fand ich, dass das Passwort Einstellung mir nur erforderlich, um die Umgebungsvariable von NEO4J_AUTH wie so zu ändern: wollen

FROM neo4j:3.0 
MAINTAINER Andy 

ENV NEO4J_AUTH neo4j/password