带有neo4j和密码设置的Docker容器
我正在尝试创建一个docker映像,它运行Neo4j服务器,并且不需要用户在初始访问时手动设置密码 我把这个作为文件归档带有neo4j和密码设置的Docker容器,neo4j,dockerfile,Neo4j,Dockerfile,我正在尝试创建一个docker映像,它运行Neo4j服务器,并且不需要用户在初始访问时手动设置密码 我把这个作为文件归档 FROM neo4j:3.2 ADD setPassword.sh . RUN ./setPassword.sh 哪个运行这个脚本 #!/bin/sh set -e # Start server ./bin/neo4j start # Wait for it to start while [ -z "$(grep 'Remote interface available
FROM neo4j:3.2
ADD setPassword.sh .
RUN ./setPassword.sh
哪个运行这个脚本
#!/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:neo4j@localhost:7474/user/neo4j/password
# Shut down the server
./bin/neo4j stop
tail -f /var/lib/neo4j/logs/neo4j.log &
sleep 10
# EOF
脚本启动Neo4j服务器,等待它启动,然后使用RESTAPI设置密码。之后,它会关闭服务器并等待一段时间,以确保服务器已关闭,以便将内存中的任何内容刷新到磁盘
该脚本似乎运行没有错误,我能够创建一个新的图像。但是,当我运行图像并连接浏览器时,密码仍然是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
似乎不支持大多数标准的wget
选项,包括发出post请求
我也没有弄清楚如何在图中安装标准的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
文件的类似错误
我没有任何使用RESTAPI的附件:我想要一些可以自动构建的东西,而不必在程序访问数据库时重置密码
我过去确实遇到过一个问题,Dockerfile中的更改丢失了,因为基本映像在保存更改的目录上执行了
VOLUME
命令,但它看起来只导出了/data
,并且似乎不包含任何授权信息。您可以覆盖docker文件中的登录密码:
FROM neo4j:3.2
ENV NEO4J_AUTH=neo4j/newPassword