thirdgen88 / ignition-docker

Ignition Docker Community Image
MIT License
72 stars 17 forks source link

Third party jdbc driver not loading from /jdbc mount #115

Closed jbolognini closed 2 years ago

jbolognini commented 2 years ago

The option to mount a directory to /jdbc containing *.jar files seems to not work.

[edit] My environment is Windows 10, WSL2, Docker Engine 20.10.12, Ubuntu 20.04.3 LTS

This is the yaml excerpt i am using, and had to mount the file directly to avoid reloading that jar file on each compose up.

    volumes:
      - gateway_data:/usr/local/bin/ignition/data
      - ./gw-init/gateway.gwbk:/restore.gwbk
      #- ./jdbc:/jdbc #cant get this to work
      - ./jdbc/mysql-connector-java-8.0.29.jar:/usr/local/bin/ignition/user-lib/jdbc/mysql-connector-java-8.0.29.jar

If i uncomment the third volume and comment out the fourth one, there is no mysql*.jar file linked in the {install-location}/user-lib/jdbc/ directory after compose up. I can see the file in /jdbc from within the container though. And the entry in the database must still be there because the driver is happy with that fourth volume mounted (once i install the jar file once by hand from the gateway web page to make the db entry).

I'm fairly new to docker and linux so i don't know how to view the echo output of the entrypoint script on compose up to see if it's complaining about anything.

thirdgen88 commented 2 years ago

view the echo output of the entrypoint script on compose up to see if it's complaining about anything.

Should be able to docker compose logs <service name or omit for all> and see the output at the beginning of the container log.

thirdgen88 commented 2 years ago

Are you using inductiveautomation/ignition image or kcollins/ignition image? The paths you're showing (/usr/local/bin/ignition) perhaps indicate you're using inductiveautomation/ignition, which doesn't yet have support for the third-party JDBC or module linking that exists in this image.

jbolognini commented 2 years ago

I’m using inductiveautomation/ignition. Ok I didn’t know JDBC linking wasn’t supported. I’ll stick with my current solution and an initialized gateway backup. Thanks!

thirdgen88 commented 2 years ago

No problem, and I understand the potential confusion (with the two available images and their admittedly striking similarities in a lot of the configurability). I think you're on the right path if you're using the official image by just bind-mounting it into place directly under /usr/local/bin/ignition/user-lib/jdbc/. 👍

The alternative would be to create a simple derived image to "bake in" that JDBC driver onto the filesystem and stage a baseline gwbk restore there.