GW failed to up on docker config/resources/core

Below my docker compose file , docker container up and running but ignition GW failed to start due to this error . i running image ignition 8.3.1 on macos

jvm 1 | 2025/10/23 11:11:35 | Caused by: java.nio.file.FileAlreadyExistsException: Resource collection path '/usr/local/bin/ignition/data/config/resources/core' exists but is not empty

version: '3.8.1'




services:

aris-ignition:

image: inductiveautomation/ignition:8.3.1

container_name: aris-ignition-test

restart: unless-stopped




# Volume mounts

volumes:

      - ./data/projects:/usr/local/bin/ignition/data/projects:rw

      - ./data/udt:/usr/local/bin/ignition/data/config/resources/core/ignition/tag-type-definition:rw

      - ./data/tags:/usr/local/bin/ignition/data/config/resources/core/ignition/tag-definition:rw

      - ./data/commissioning.json:/usr/local/bin/ignition/data/commissioning.json:rw




# Environment

env_file:

      - ignition.env

# - ignition.env.local  # Uncomment if present (git-ignored)

ports:

      - "8089:8088"

      - "8044:8043"

You need to persist the data volume, even if you want to also bind-mount further below it. Try the following:

services:
  aris-ignition:
    image: inductiveautomation/ignition:8.3.1
    container_name: aris-ignition-test
    restart: unless-stopped
  
    # Volume mounts
    volumes:
      - aris-ignition-data:/usr/local/bin/ignition/data
      - ./data/projects:/usr/local/bin/ignition/data/projects
      - ./data/config/resources/core:/usr/local/bin/ignition/data/config/resources/core
  
    # Environment
    env_file:
      - ignition.env
    # - ignition.env.local  # Uncomment if present (git-ignored)
  
    ports:
      - "8089:8088"
      - "8044:8043"

volumes:
  aris-ignition-data:

More effort will be required if you really need to bind-mount into deeper folders within .../data/config/resources/core. This is due to how Docker works, specifically how it creates parent folders of a bind-mount target when those folders don't exist in the image already--they'll be created as root:root owned. Additionally, the core resource collection doesn't exist in the base image--it is created on startup. If you bind-mount below its base path, the folder will not be empty and auto-creation produce an error like you encountered:

jvm 1    | 2025/10/28 13:24:56 | E [g.ConfigurationSetup          ] [13:24:56.290]: Unable to create 'core' resource collection
jvm 1    | 2025/10/28 13:24:56 | java.nio.file.FileAlreadyExistsException: Resource collection path '/usr/local/bin/ignition/data/config/resources/core' exists but is not empty
...

Upon inspection of this FAULTED gateway state, you'll also see that:

  1. The base core config folder has the wrong permissions:
  2. If the permissions were correct, it also sees that the collection does not yet "exist" (i.e. no config-mode.json present) but the folder is non-empty:

If you bind-mount to just the core collection (as my suggested docker-compose.yml does), you can see a correct configuration upon inspection:

There is additional information on possible strategies in the Version and Source Control Guide. There is a lot of flexibility in the file-based configuration, but there is nuance in how you layout your development stacks and data persistence.

2 Likes