I need to install plugins in my neo4j container, and this is my build file:
FROM neo4j:3.5.14
ENV NEO4J_AUTH='neo4j/password'
ENV NEO4J_ACCEPT_LICENSE_AGREEMENT='yes'
ENV NEO4JLABS_PLUGINS='["apoc", "graph-algorithms"]'
RUN echo "dbms.security.procedures.unrestricted=algo.*" >> ./conf/neo4j.conf
The ENV NEO4JLABS_PLUGINS='["apoc", "graph-algorithms"]' part should download and install the plugins at container run.
However, I have to run this container in a restricted environment, with no internet access. So, I cannot rely on the download and install on container run.
How can i download and install the plugins at the docker image build phase, so that the plugins come ready with image and no further download is required ?
You will need to identify the jar versions you need, and download them in advance. Also, this means you won't use NEO4JLABS_PLUGIN (it is dynamic and pulls from the internet).
Identify the versions you need, download and put them in the container's plugin directory.
I prefer using NEO4JLABS_PLUGIN but sometimes the json NEO4JLABS_PLUGIN uses isn't setup with the latest release jar information, yet... So I retain the wget's in my script for those times when I switch back to manually fetching the jars.
I map the plugins directory in the container to a host folder and put the jars in there...
e.g.
--volume ${NEO_GRAPH_DIR}/plugins:/plugins