Hi Taher, thanks for your support.
My problem was caused by the unavailability of the gradle cache by using
the java -jar command. This means that his cache is part of the system
execution and is not just used to build the system. I also found it
cannot be created offline, it looks like it is dependent on the username
and server?
I have the docker image working now according your recommendations:
Within the docker container I run the ofbiz system as user root and
persist the directory /root/.gradle
This means however that the first startup of the container requires the
full download of all dependencies.
Conclusion:
1. it is not possible to create an ofbiz production system locally and
install it in a production environment. It needs to be build in place of
production.
2. The gradle cache is part of the system code, the system will not run
without it.
It would be much better if we could build the system offline, create the
docker container which should run without rebuilding and the gradle
cache. This is what a docker container is used for?
--
Regards,
Hans Bakker
CEO, http://antwebsystems.com
On 21/02/18 20:34, Taher Alkhateeb wrote:
Oh .. that would be hard to debug without further analysis. Essentially
Java is not seeing libraries in the classpath. The classpath is defined
_inside_ the jar file with pointers to where the gradle cache is located.
So it could be many things, maybe you did not make a first run with gradle
to download the cache, or maybe you have different users inside the
container each with their own cache directory. Another possibility is that
you mounted a volume on top of the downloaded cache.
On Feb 21, 2018 4:22 PM, "Hans Bakker" <[email protected]> wrote:
Thanks Taher, for the extended reply.
currently I have tried the most simple one:
java -jar build/libs/ofbiz.jar
this works outside the docker image, however within the running container
it gives the error:
Exception in thread "main" java.lang.NoClassDefFoundError:
org/apache/commons/cli/ParseException
at org.apache.ofbiz.base.start.Start.main(Start.java:60)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.cli.ParseEx
ception
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
perhaps you have a suggestion for me?
thanks again for your help.
Regards,
Hans
On 21/02/18 17:56, Taher Alkhateeb wrote:
Oh I just remembered something else you might want to do. You can create a
volume for the cache, this way you wait for the download only the first
time you instantiate the image and subsequent container instantiations
would not need to download anything
On Feb 21, 2018 9:55 AM, "Taher Alkhateeb" <[email protected]>
wrote:
The image has to get larger, there is no way around that. Either you
repopulate the cache or save a bigger image. OFBiz will not work without
its libraries just like in the ant days.
For me I have a big OFBiz image because I don't care about size as much as
I do about startup time.
Now your question was how to start without a rebuild. You can either:
1- in build.gradle go to the method createOfbizCommandTask and remove
"dependsOn build"
OR
2- run java -jar build/libs/ofbiz.jar
On Feb 21, 2018 8:03 AM, "Hans Bakker" <[email protected]> wrote:
Good day!
i am trying to create a docker image of the new ofbiz using gradle.
And obviously i want a quick startup time.
So i run all the gradle build tasks offline, copy the result in a docker
image and install it in a docker environment.
Then as normal run ./gradlew ofbiz as the startup command.
Then because the gradle cache is not there gradle rebuids. Copying the
gradle cache into the docker image is no option, because it gets
substantial bigger.
How to start the system assuming the build was successful and no rebuild is
required?