cancel
Showing results for 
Search instead for 
Did you mean: 

Head's Up! Site maintenance this Wednesday, February 1. Disruptions expected as we migrate the forums.

Docker Compose setting for APOC installation

intouch_vivek
Graph Steward

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.ja... -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?

9 REPLIES 9

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

intouch_vivek
Graph Steward

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?

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

intouch_vivek
Graph Steward

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

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.*

lucas_picollo
Node Link

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:

markhneedham
Graph Buddy

A bit late to the game, but this works for me:

 

version: '3.7'
services:
  neo4j:
    image: neo4j:4.4.7
    hostname: neo4j
    container_name: neo4j
    ports:
      - "7474:7474"
      - "7687:7687"
    environment:
      - NEO4JLABS_PLUGINS=["apoc"]

 

Update: Oops sorry, I didn't realise that someone had already answered it correctly and their post was hidden behind the 'More replies' button!

markhneedham
Graph Buddy

This works for me:

 

version: '3.7'
services:
  neo4j:
    image: neo4j:4.4.7
    hostname: neo4j
    container_name: neo4j
    ports:
      - "7474:7474"
      - "7687:7687"
    environment:
      - NEO4JLABS_PLUGINS=["apoc"]
Nodes 2022
Nodes
NODES 2022, Neo4j Online Education Summit

All the sessions of the conference are now available online