[BUG]: Using JCB Docker image. Create a new component and compile produces, unclear, error messages #1315

Closed
opened 2026-07-02 10:36:55 +00:00 by wschwarte · 3 comments

What Happened?

I copied the docker-compose.yml template to create a new Joomla 6 site with JCB installed. I click 'new component' and filled in the required fields on the first tab.

then i went to compile and selected joomla 6 as target and clicked compile.

An unclear error message showed:

Failed to build dynamic structure

I do not know what to do. This message is not helpful.

Next, i added an admin view on the component and again filled in the required fields on the first tab. clicked save, save and tried to compile again; another error (different)

** VDM\Joomla\Abstraction\Registry::get(): Argument #1 ($path) must be of type string, null given, called in /var/www/html/libraries/vendor_jcb/VDM.Joomla/src/Abstraction/Registry/Traits/VarExport.php on line 51 **

Also unclear.

Steps to reproduce the Bug

see what happened above.

Which Joomla version are you compiling in?

6.1.1

Which PHP version are you compiling in?

8.4

Which Joomla versions are you targeting?

6

Which PHP version are you targeting?

8.4

Which Web server is JCB running on?

JCB docker

Which Relational Database is JCB running on?

jcb docker

Which OS is JCB running on?

jcb docker

Which JCB version are you using?

6.1.6

Where in JCB did this issue occur?

Compilation of a component

On which browsers did you encounter the issue?

Firefox

Additional Comments

No response

### What Happened? I copied the docker-compose.yml template to create a new Joomla 6 site with JCB installed. I click 'new component' and filled in the required fields on the first tab. then i went to compile and selected joomla 6 as target and clicked compile. An unclear error message showed: **Failed to build dynamic structure** I do not know what to do. This message is not helpful. Next, i added an admin view on the component and again filled in the required fields on the first tab. clicked save, save and tried to compile again; another error (different) ** VDM\Joomla\Abstraction\Registry::get(): Argument #1 ($path) must be of type string, null given, called in /var/www/html/libraries/vendor_jcb/VDM.Joomla/src/Abstraction/Registry/Traits/VarExport.php on line 51 ** Also unclear. ### Steps to reproduce the Bug see what happened above. ### Which Joomla version are you compiling in? 6.1.1 ### Which PHP version are you compiling in? 8.4 ### Which Joomla versions are you targeting? 6 ### Which PHP version are you targeting? 8.4 ### Which Web server is JCB running on? JCB docker ### Which Relational Database is JCB running on? jcb docker ### Which OS is JCB running on? jcb docker ### Which JCB version are you using? 6.1.6 ### Where in JCB did this issue occur? Compilation of a component ### On which browsers did you encounter the issue? Firefox ### Additional Comments _No response_
wschwarte added the Bug label 2026-07-02 10:36:55 +00:00
Owner

Thanks for reporting this, and sorry that the error message was not helpful.

JCB has a steep learning curve, especially when starting with a new Joomla 6/JCB Docker setup, so before we treat this as a compiler bug we first need to confirm exactly what environment and starting point you are using.

We build and compile components on Joomla 6 with the JCB Docker environment regularly, so the Joomla 6 target itself should work. The error you are seeing may be caused by an incomplete component structure, an incomplete admin view, a setup difference, or a Docker/container state issue. At the moment we do not yet have enough information to know which one it is.

Could you please help us confirm the following?

  1. Did you use this exact docker-compose.yml file?
services:
  joomla:
    image: octoleo/joomengine:latest
    ports:
      - "8080:80"
    environment:
      JOOMLA_DB_HOST: mariadb:3306
      JOOMLA_DB_USER: joomengine
      JOOMLA_DB_NAME: joomengine
      JOOMLA_DB_PASSWORD: secure_password12345
#      JOOMLA_CLI_COMMANDS: "componentbuilder:pull:joomla_component --items=d7e30702-ec49-45ac-8897-0389d61d6da0"
    depends_on:
      - mariadb
    volumes:
      - joomla_data:/var/www/html

  mariadb:
    image: mariadb:latest
    environment:
      MARIADB_USER: joomengine
      MARIADB_DATABASE: joomengine
      MARIADB_PASSWORD: secure_password12345
      MARIADB_ROOT_PASSWORD: your_root_secure_password12345
    volumes:
      - mariadb_data:/var/lib/mysql

volumes:
  joomla_data:
  mariadb_data:
  1. Was this a completely fresh Docker setup, or were existing Docker volumes reused from an earlier test?

  2. After starting the containers, did the Joomla installation complete normally without any warnings or failed installation steps?

  3. Can you compile the demo component that is already available in JCB?

This is an important test because it tells us whether the compiler and Docker environment are working correctly before we look at the custom component you created.

  1. When you created your own component, did you add at least one complete admin view with at least one field before compiling?

A component shell by itself is not normally enough for a successful compile. If the component or admin view is incomplete, JCB should still give you a clearer validation message, but it may explain why the compiler reached this error.

  1. For the admin view you added, please confirm whether the following were completed:
  • single view name
  • list view name
  • database table name/details
  • at least one field
  • the field was linked correctly to the admin view
  • the admin view and component were both saved before compiling
  1. Have you gone through the Docker documentation here?

https://github.com/joomengine/docker/blob/master/docker/README.md

  1. Have you gone through the main JCB documentation or beginner material?

https://github.com/joomengine/jcb-documentation/blob/master/english/README.md

There is also a video playlist here:

https://www.youtube.com/playlist?list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE

You do not need to debug the PHP error yourself. What we need first is to establish whether this is:

  • a Docker setup issue,
  • an incomplete component/view configuration,
  • a problem with the specific component being created,
  • or a compiler validation bug where JCB should catch the missing structure earlier and show a better message.

The second error:

VDM\Joomla\Abstraction\Registry::get(): Argument #1 ($path) must be of type string, null given

suggests that somewhere during compilation JCB expected a valid registry path but received an empty value instead. That should not surface as a low-level PHP error, so we will also look at improving the compiler validation/message around this area.

For now, please try compiling the demo component first and let us know whether that succeeds. If the demo component compiles successfully, then the Docker/Joomla/JCB environment is probably working, and we can focus on what is missing in the new component setup. If the demo component fails too, then we need to look more closely at the Docker setup and installation state.

Thanks for reporting this, and sorry that the error message was not helpful. JCB has a steep learning curve, especially when starting with a new Joomla 6/JCB Docker setup, so before we treat this as a compiler bug we first need to confirm exactly what environment and starting point you are using. We build and compile components on Joomla 6 with the JCB Docker environment regularly, so the Joomla 6 target itself should work. The error you are seeing may be caused by an incomplete component structure, an incomplete admin view, a setup difference, or a Docker/container state issue. At the moment we do not yet have enough information to know which one it is. Could you please help us confirm the following? 1. Did you use this exact `docker-compose.yml` file? ```yaml services: joomla: image: octoleo/joomengine:latest ports: - "8080:80" environment: JOOMLA_DB_HOST: mariadb:3306 JOOMLA_DB_USER: joomengine JOOMLA_DB_NAME: joomengine JOOMLA_DB_PASSWORD: secure_password12345 # JOOMLA_CLI_COMMANDS: "componentbuilder:pull:joomla_component --items=d7e30702-ec49-45ac-8897-0389d61d6da0" depends_on: - mariadb volumes: - joomla_data:/var/www/html mariadb: image: mariadb:latest environment: MARIADB_USER: joomengine MARIADB_DATABASE: joomengine MARIADB_PASSWORD: secure_password12345 MARIADB_ROOT_PASSWORD: your_root_secure_password12345 volumes: - mariadb_data:/var/lib/mysql volumes: joomla_data: mariadb_data: ``` 2. Was this a completely fresh Docker setup, or were existing Docker volumes reused from an earlier test? 3. After starting the containers, did the Joomla installation complete normally without any warnings or failed installation steps? 4. Can you compile the demo component that is already available in JCB? This is an important test because it tells us whether the compiler and Docker environment are working correctly before we look at the custom component you created. 5. When you created your own component, did you add at least one complete admin view with at least one field before compiling? A component shell by itself is not normally enough for a successful compile. If the component or admin view is incomplete, JCB should still give you a clearer validation message, but it may explain why the compiler reached this error. 6. For the admin view you added, please confirm whether the following were completed: * single view name * list view name * database table name/details * at least one field * the field was linked correctly to the admin view * the admin view and component were both saved before compiling 7. Have you gone through the Docker documentation here? https://github.com/joomengine/docker/blob/master/docker/README.md 8. Have you gone through the main JCB documentation or beginner material? https://github.com/joomengine/jcb-documentation/blob/master/english/README.md There is also a video playlist here: https://www.youtube.com/playlist?list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE You do not need to debug the PHP error yourself. What we need first is to establish whether this is: * a Docker setup issue, * an incomplete component/view configuration, * a problem with the specific component being created, * or a compiler validation bug where JCB should catch the missing structure earlier and show a better message. The second error: ```text VDM\Joomla\Abstraction\Registry::get(): Argument #1 ($path) must be of type string, null given ``` suggests that somewhere during compilation JCB expected a valid registry path but received an empty value instead. That should not surface as a low-level PHP error, so we will also look at improving the compiler validation/message around this area. For now, please try compiling the demo component first and let us know whether that succeeds. If the demo component compiles successfully, then the Docker/Joomla/JCB environment is probably working, and we can focus on what is missing in the new component setup. If the demo component fails too, then we need to look more closely at the Docker setup and installation state.
Author
  1. Yes. the compose.yml from the instructions
  2. fresh docker.
  3. all completed ok. ran docker compose up and site loaded perfectly. could log in and JCB was installed.
  4. sorry, forgot to mention. the demo6 component could be compiled. I even removed demo6 completely, pull a fresh one and compiled that one without issues.
  5. at first try i did not add anything. compiled and got the dynamic fields(?) error. (a better message would be 'we need at least 1 admin view and 1 xxx etc.).
  6. i only entered a 'system name', a 'name (single record)', 'name (list of recoreds)', short description, description. It was automatically linked as i opened the view from the component editor. So only the 'Details' Tab.
  7. yes, that is where i got the YML from
  8. no. we are JCB for older joomla setups and i was just trying to test the compile, and push/pull git setup.

I think if you would create a new folder. put in a compose.yml. up it. open locahost;8080, goto jcb, add component, compile. you would get the same errors.

the fact that demo6 is compiling tells me that it should work, but error handling isn't handled user friendly. so, some better error messages, of add some validation BEFORE compiling, would help make the product even better.

thanks

1. Yes. the compose.yml from the instructions 2. fresh docker. 3. all completed ok. ran docker compose up and site loaded perfectly. could log in and JCB was installed. 4. sorry, forgot to mention. the demo6 component could be compiled. I even removed demo6 completely, pull a fresh one and compiled that one without issues. 5. at first try i did not add anything. compiled and got the dynamic fields(?) error. (a better message would be 'we need at least 1 admin view and 1 xxx etc.). 6. i only entered a 'system name', a 'name (single record)', 'name (list of recoreds)', short description, description. It was automatically linked as i opened the view from the component editor. So only the 'Details' Tab. 7. yes, that is where i got the YML from 8. no. we are JCB for older joomla setups and i was just trying to test the compile, and push/pull git setup. I think if you would create a new folder. put in a compose.yml. up it. open locahost;8080, goto jcb, add component, compile. you would get the same errors. the fact that demo6 is compiling tells me that it should work, but error handling isn't handled user friendly. so, some better error messages, of add some validation BEFORE compiling, would help make the product even better. thanks
Owner

We work with JCB everyday, and no we do not get these errors.

We work with JCB everyday, and no we do not get these errors.
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: joomla/Component-Builder#1315