Docker Compose setting for APOC installation

I have docker compose file
neo:
image: neo4j:latest
ports:
- '7474:7474'
- '7473:7473'
- '7687:7687'
expose:
- 7474
environment:
- NEO4J_dbms_security_procedures_unrestricted=apoc.*
- NEO4J_apoc_import_file_enabled=true
- NEO4J_apoc_export_file_enabled=true
- NEO4J_apoc_import_file_use__neo4j__config=true
- NEO4J_dbms_shell_enabled=true
- NEO4J_AUTH=user/password
- NEO4J_HEAP_MEMORY=4G
- NEO4J_CACHE_MEMORY=2G
user: ${CURRENT_UID}
volumes:
- "neo-data:/data"
- "neo-data:/conf"
- "neo-data:/plugins"
- "neo-data:/import"
- "neo-data:/logs"

I was expecting the Neo4j container will come up with APOC installed in it .
There was no problem in Neo4j server but /plugins folder was empty also CALL apoc.config.list() was throwing error "ProcedurenotFound ..... "

To install APOC at the container I tried -

  1. cd /plugins
  2. curl -L https://github.com/neo4j-contrib/neo4j-apoc-procedures/releases/download/3.5.0.2/apoc-3.5.0.2-all.jar -O
    inside the Neo4j --- This command downloaded the APOC jar into plugins
  3. Restarted the container
  4. Tried CALL apoc.config.list() and it worked.

Question: Is there any way to get installed the APOC using docker compose file itself?

Newer version of the docker container (I think >= 3.5.11) do support a env variable NEO4JLABS_PLUGINS being an array of plugins to integrate, e.g.

docker run -it --rm --env 'NEO4JLABS_PLUGINS=["apoc", "graph-algorithms"]' neo4j:3.5.11

1 Like

Thanks for your input Stefan!!

I need to keep things at my docker compose file and when i tried to have

  • NEO4JLABS_PLUGINS=["apoc", "graph-algorithms"] in the env section of compose file it just downloaded *.json file in the container however my exception is to download apoc jar into the plugins

What is the full error message here?

There is no error message, however my docker compose file brings up the neo4j instance but without APOC

I suspect you need to quote the value of NEO4JLABS_PLUGINS somehow. Docker compose uses YAML.

add apoc.jar file into the plugins directory then...
change your plugins directory as:

/var/lib/neo4j/plugins

and add:

-e NEO4J_dbms_security_procedures_unrestricted=apoc.*

I'm using my compose like this:

version: "3.8"

services:
  neo4j: 
    image: neo4j:4.1-enterprise
    ports:
    - "7474:7474"
    - "7687:7687"
    volumes:
      - ./neo4j/data:/data
      - ./neo4j/logs:/logs
    environment:
      - NEO4J_AUTH=neo4j/password
      - NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
      - NEO4JLABS_PLUGINS=["graph-data-science", "apoc"]
      - NEO4J_dbms_security_procedures_whitelist=gds.*, apoc.*
      - NEO4J_dbms_security_procedures_unrestricted=gds.*, apoc.*

volumes:
  neo4j: