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 fetch
및 ask search
이 tar.gz
없는 파일에 대해 비슷한 오류를 제공합니다.
REST API를 사용하는 데 첨부 파일이 없습니다. 프로그램을 데이터베이스에 액세스 할 때 자동으로 빌드 할 수 있고 비밀번호를 재설정하지 않아도됩니다.
나는 과거에 문제가 발생했던 경우 기본 이미지가 변화를 보유하고있는 디렉토리에 VOLUME
명령을했다,하지만 /data
이 내 보낸 것 같습니다과가 나타나지 않기 때문에 손실 Dockerfile에서 변경 권한 정보를 보유하십시오.