Head's Up! These forums are read-only. All users and content have migrated. Please join us at community.neo4j.com.
06-19-2020 09:48 AM
I set up my Neo4J db via Docker and I can access Cypher-Shell fine using
docker exec --interactive --tty <container_id> bin/cypher-shell
However, when I try to check whether Neo4J is running using this command:
docker exec --interactive --tty <container_id> bin/neo4j status
It says Neo4j is not running even though it is.
Is it possible to check the status via Docker somehow?
06-19-2020 10:54 AM
Hi
Did you check with
docker ps --filter status=running
06-19-2020 10:55 AM
Yes, of course the container is running, this is not the issue.
The issue is to access neo4j
command from a running container.
06-19-2020 11:19 AM
try
docker exec -it <containername> /bin/bash
or
docker exec -it <containername> /bash
06-19-2020 11:12 AM
It is possible to check if neo4j is running, I have a script I call wait4bolt_outside (below)
which I use to check if neo4j is online and ready after a bulk load db create.
The next step in the script creates indexes, and other misc cypher (label graph islands),
and those scripts can't run successfully until neo4j is completely online and ready.
wait4bolt_outside
#!/bin/bash
CONTAINER=$1
if [[ -z ${CONTAINER} ]]
then
echo "Usage:"
echo " wait4bolt_outside docker_container"
echo " e.g. wait4bolt_outside neo_ag"
exit 1
fi
PORT=$(docker exec -t ${CONTAINER} bash -c 'echo $NEO4J_dbms_connector_bolt_advertised__address'
|cut -d : -f 2)
echo "neo4j bolt is on port ${PORT}"
if [[ -z ${PORT} ]]
then
echo "Is ${CONTAINER} running neo4j? I don't see it..."
echo
echo "Usage:"
echo " wait4bolt_outside docker_container"
echo " e.g. wait4bolt_outside neo_ag"
exit 1
fi
echo "wait for neo4j bolt to respond at port ${PORT}"
# this returns before server is ready
# curl -i http://127.0.0.1:${PORT} 2>&1 | grep -c -e '200 OK' || break
# try an actual query as test?
docker exec -e NEO4J_USERNAME -e NEO4J_PASSWORD -t ${CONTAINER} \
bash -c "until echo 'match (n) return count(n);' | bin/cypher-shell -a bolt://localhost:${PORT
}; do echo $? ; sleep 1; done"
echo 'neo4j online!'
I am going to guess that neo4j status does not work because inside docker neo4j is run in the docker startup script /docker-entrypoint.sh instead of as a service?
To take a peek inside the running docker container you can launch shell and then run commands, helpful if developing a command, launching a command through docker exec can be a little tricky (with special characters, and issues with stdin/stdout/stderr) I find it easier to get a command working inside docker at the shell prompt, then attempt to launch it from the host outside the container (separately).
docker exec -it containername bash
All the sessions of the conference are now available online