2017-10-11 10 views
0

Neo4jサーバーを実行するドッキング・イメージを作成しようとしていますが、初期アクセス時にパスワードを手動で設定する必要はありません。neo4jとパスワードを設定したDockerコンテナ

私はこのスクリプト

#!/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サーバを起動し、それが起動するのを待ち、その後、パスワードを設定するREST APIを使用して実行しますDockerfile

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

としてこれを持っています。その後、サーバをシャットダウンし、メモリ内のすべてのものがディスクにフラッシュされるように、サーバがシャットダウンされるのを少し待つ。

スクリプトはエラーなしで実行されているように見え、新しい画像を作成できます。しかし、私が画像を実行してブラウザで接続すると、パスワードはまだneo4jです。

引数なしで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 

ベースイメージでwgetは、POSTリクエストを行うなど、ほとんどの標準的なwgetオプションは、サポートされていないように見えます。

私はまた、画像内の標準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 
関連する問題