Can't set root password for OrientDB using docker-compose
iamdeit opened this issue · 7 comments
If I pass the ORIENTDB_ROOT_PASSWORD in a docker-compose file it does not work. My SO thread: http://stackoverflow.com/questions/40640901/cant-set-root-password-for-orientdb-using-docker-compose
I saw you solved the problem.
I am still not able to login when I use docker-compose. With standalone docker it works.
version: "3"
volumes:
db:
services:
db:
image: orientdb:2.2.26
hostname: db
environment:
- ORIENTDB_ROOT_PASSWORD=test
ports:
- "2424:2424"
- "2434:2434"
- "2480:2480"
volumes:
- db:/orientdb/databases
When I attach to the shell in the running docker-compose-db container I get
/orientdb # printenv
ORIENTDB_ROOT_PASSWORD=test
JAVA_ALPINE_VERSION=8.131.11-r2
ORIENTDB_DOWNLOAD_MD5=51f07639db0cce7574be6fe0c90e3ba7
HOSTNAME=db
SHLVL=1
HOME=/root
ORIENTDB_DOWNLOAD_URL=http://central.maven.org/maven2/com/orientechnologies/orientdb-community/2.2.26/orientdb-community-2.2.26.tar.gz
ORIENTDB_VERSION=2.2.26
JAVA_VERSION=8u131
TERM=xterm
PATH=/orientdb/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin
LANG=C.UTF-8
PWD=/orientdb
JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
ORIENTDB_DOWNLOAD_SHA1=7b58eed99b5c5c03139eaa16718e2b048ffcd046
/orientdb #
Edit: Found the solution. You got to use docker-compose down
to complelty remove the database - somehow the root password is stored in the database, I think this should not be.
I created a compose and run it.
It works.
I'm able to create a db with root/test pointing the browser to localhost:2480
Yes, but once you change the password in the environment variable you can't connect to the database anymore. For that, first create an OrientDB container with docker-compose and after that change the password/environment variable in the docker-compose file - after that it is not possible to create any database anymore because of login issues.
I'm unsure if this contradicts the philosophy of a stateless container.
I don't understand. Please explain and detail this: "Yes, but once you change the password in the environment variable you can't connect to the database anymore."
It's not clear to what you're doing.
First I create a docker-compose.yml
file which contains
version: "3"
volumes:
db:
services:
db:
image: orientdb:2.2.26
hostname: db
environment:
- ORIENTDB_ROOT_PASSWORD=test
ports:
- "2424:2424"
- "2434:2434"
- "2480:2480"
volumes:
- db:/orientdb/databases
Then docker-compose up
and now it works - so lets stop it with ctrl + c.
After that I modify my docker-compose.yml
file, so the environment variable ORIENTDB_ROOT_PASSWORD
is something different, let's say I modify my docker-compose.yml
like this
version: "3"
volumes:
db:
services:
db:
image: orientdb:2.2.26
hostname: db
environment:
- ORIENTDB_ROOT_PASSWORD=root
ports:
- "2424:2424"
- "2434:2434"
- "2480:2480"
volumes:
- db:/orientdb/databases
let's enter docker-compose up
. Now I won't be able to login anymore with the set root password root
. I'm unsure if this is a real bug, maybe it contradicts the stateless philosophy of a container, at least it gave me a bit of headache because I pointed to an OrientDB which was created with another root user.
When i type docker-compose down
and after that docker-compose up
I'm now able to login with root
as password because the database was deleted.
It's not related to the container, but on how OrientDB persists its configuration files.
The password (hashed) of the root user is stored in the orientdb-server-config.xml file.
I suspect that with ctrl-c the container isn't deleted, while with down/up it is recreated.
So, the first time the password change hasn't effect, the second time is on a fresh container.