2017-10-11 2 views
0

Neo4j 서버를 실행하고 사용자가 초기 액세스시 수동으로 암호를 설정하지 않아도되는 도커 이미지를 만들려고합니다.neo4j 및 암호가 설정된 도커 컨테이너

그때,

#!/bin/sh 

set -e 

# Start server 
./bin/neo4j start 

# Wait for it to start 
while [ -z "$(grep 'Remote interface available' /var/lib/neo4j/logs/neo4j.log)" ] 
do 
    echo Waiting for neo4j to start 
    sleep 1 
done 

# Set the password via REST 
wget --header="Content-Type: application/json" \ 
    --post-data='{"password": "newPassword"}' \ 
    http://neo4j:[email protected]:7474/user/neo4j/password 

# Shut down the server 
./bin/neo4j stop 

tail -f /var/lib/neo4j/logs/neo4j.log & 
sleep 10 
# EOF 

스크립트는 Neo4j 서버를 시작,이 스크립트를 실행이 시작될 때까지 대기하고 Dockerfile

FROM neo4j:3.2 
ADD setPassword.sh . 
RUN ./setPassword.sh 

로이이 암호를 설정하기 위해 REST API를 사용하여 . 그런 다음 서버를 종료하고 잠시 기다린 후 메모리가 디스크에 플러시되도록 시스템이 종료되었는지 확인합니다.

스크립트가 오류없이 실행되는 것으로 나타나고 새 이미지를 만들 수 있습니다. 그러나 이미지를 실행하고 브라우저와 연결할 때 암호는 여전히 neo4j입니다.

인수없이 wget의 출력을 보면이 : 기본 이미지에서 wget 게시물 요청을 포함하여 대부분의 표준 wget 옵션을 지원하지 않습니다처럼

BusyBox v1.26.2 (2017-06-11 06:38:32 GMT) multi-call binary. 

Usage: wget [-c|--continue] [--spider] [-q|--quiet] [-O|--output-document FILE] 
    [--header 'header: value'] [-Y|--proxy on/off] [-P DIR] 
    [-U|--user-agent AGENT] [-T SEC] URL... 

Retrieve files via HTTP or FTP 

    --spider Spider mode - only check file existence 
    -c  Continue retrieval of aborted transfer 
    -q  Quiet 
    -P DIR  Save to DIR (default .) 
    -T SEC  Network read timeout is SEC seconds 
    -O FILE  Save to FILE ('-' for stdout) 
    -U STR  Use STR for User-Agent header 
    -Y on/off Use proxy 

것 같습니다.

은 또한 이미지에 표준 curl을 설치하는 방법을 알아 내기 위해 실패

bash-4.3# apk add curl 
WARNING: Ignoring APKINDEX.84815163.tar.gz: No such file or directory 
WARNING: Ignoring APKINDEX.24d64ab1.tar.gz: No such filapk e or directory 
ERROR: unsatisfiable constraints: 
    curl (missing): 
    required by: world[curl] 

apk fetchask searchtar.gz없는 파일에 대해 비슷한 오류를 제공합니다.

REST API를 사용하는 데 첨부 파일이 없습니다. 프로그램을 데이터베이스에 액세스 할 때 자동으로 빌드 할 수 있고 비밀번호를 재설정하지 않아도됩니다.

나는 과거에 문제가 발생했던 경우 기본 이미지가 변화를 보유하고있는 디렉토리에 VOLUME 명령을했다,하지만 /data이 내 보낸 것 같습니다과가 나타나지 않기 때문에 손실 Dockerfile에서 변경 권한 정보를 보유하십시오.

당신은 고정 표시기 파일의 로그인 비밀번호를 대체 할 수 있습니다

답변

5

:

FROM neo4j:3.2 
ENV NEO4J_AUTH=neo4j/newPassword