2016-07-28 5 views
1

neo4j 인스턴스를 설정하는 도커 파일을 만들려고합니다. 나는 다음 이미지를 구축하고 나는 나의 호스트 시스템에서 localhost:4747에서 neo4j 패널에 액세스 할 수있어 동안 다음 명령도커 내 로컬 호스트 - neo4j

docker run -p 7474:7474 myimage 

를 사용하여 실행, 여기에서

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 

: 현재 나는 다음이 , 컨테이너 내부에서 실행될 curl 명령은 자체 localhost 인스턴스에 액세스 할 수 없습니다.

그래서 내 질문에, 내가 정확히이 일을 오전 및 어떻게 컨테이너 내부에서 localhost를 호출 할 수 있습니까?

분명히하기 위해, 나는 컬 요청이 컨테이너에서 벗어나는 것을 원하지 않습니다. 컨테이너 안의 neo4j와 통신해야합니다.

답변

1

어쩌면 당신이 인증을 제어하는 ​​환경 변수 $NEO4J_AUTH를 사용하려면 다음 neo4j 이미지의 Dockerfile보고 후, 나는 암호를 설정하면 전용과 같이 NEO4J_AUTH의 환경 변수를 변경하는 나에게 필요한 것을 발견 설명 된대로 here. 예를 들어

이 비활성화 인증 또한 주어진 옵션을 사용하면 충분하지 않은 경우 당신이 당신의 자신의 버전을 만들 수 있도록 고정 표시기 neo4j:3.0 이미지의 entrypoint script을 확인 할 수 있습니다

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

.

+0

고마워요, 그 해결책으로 밝혀졌고 도커 파일에 대해 배웠습니다. – Andy

2

컨테이너는 달리기 컬입니다. 위의 Dockerfile에 따라 컨테이너 안의 neo4j가 시작되지 않으므로 localhost에는 사용할 수 없습니다.

다른 컨테이너에서 실행중인 경우 해당 컨테이너의 IP 주소를 사용해야합니다.

+0

이것을 바탕으로 CMD가 원본 이미지 CMD를 무시할 것이라고 말하고 있습니까? 나는이 명령이'source-run, source-cmd -> my-run, my-cmd'와 같다고 가정했다. – Andy

+1

도커 이미지는 하나의'CMD '만 가질 수있다. dockerfile에'CMD'를 지정하면 기본 이미지에 존재하는 모든 것을 덮어 씁니다. – larsks

+0

정보 주셔서 감사합니다! – Andy

1

비밀 번호를 설정하는 내 접근 방식은 오랜 바람이되었습니다.

FROM neo4j:3.0 
MAINTAINER Andy 

ENV NEO4J_AUTH neo4j/password 
관련 문제