Closed jamiejackson closed 5 years ago
Hi! Thanks for providing Dockerfiles for Lucee, it makes Lucee way easier to test out and actually. After finding Lucee, an organization I work for is interested in Dockerizing some of our old ColdFusion apps.
To the point of this Issue, I agree with the sentiment that the current structuring of the lucee
repositories on Docker Hub is a bit strange. It sounds from this Issue like the current structure was chosen/emerged from the use of automated build triggers—this is fine, and works pretty well, but does have some drawbacks.
To this end, my colleague, @hawkrives, and I spend the evening working on a new build infrastructure that uses Travis CI instead of Docker Hub automated builds. What this ends up doing is providing a nice, clean manifest file (called matrix.yml
, pictured below) which is edited to adjust the various variants of the Lucee Docker images that are built, which can then be turned into a .travis.yml file and pushed into the repository. (We must do this due to a limitation with Travis' support for multidimensional build matrices, and the fact that we can't make build matrices of more than 200 builds.)
You can find:
Our repository at @hawkrives/lucee-travis, which mostly uses this repository as a basis but involves some pretty heavy modifications.
The results of our builds at kryestofer/lucee on Docker Hub (see the Tags tab)
Some of the highlights of our solution:
Our build pipeline takes about 10–15 minutes (with parallelization) and covers the three latest versions of Tomcat available on Docker Hub (8.0, 8.5, 9.0) as well as all of the java runtimes that are supported, (jre{8..10}
) and we also add support for alpine
Linux, which is even lighter-weight than the default Debian. We also add -light
variants for the Lucee "light" distributions… and other stuff. All using CDN-provided .jar files.
Upgrades are as easy and straightforward as editing this file.
Rebuilds happen whenever master
is pushed, and could be scheduled to run on a schedule, too.
There are a couple of things we want to rethink on our work so far, but is approach this the direction that you think would be best? I personally think that building with Travis or some other comparable CI provider offers the greatest flexibility, but I'm not familiar enough with Lucee yet to make a fully informed decision.
For what it's worth, we've tried out some of the images our system is producing with one of our larger apps and it worked! Further testing and scrutiny is obviously required to verify this result, but our changes don't seem to be breaking.
TL;DR/Conclusion: If you're interested, we would love to open a PR on this repository that covers all of our changes, and this would also allow us to give more details as well as get feedback from you!
That's great work! It's definitely very close to the direction that we want to move in :) The matrix of builds looks really good, we might just want to provide some additional tags for the latest build of each minor version, with the latest supported/recommended Tomcat and JRE, with options for both nginx and Alpine; e.g. "5.2-nginx", "5.2-nginx-alpine", and "5.2-alpine". Maybe "light" as well though I haven't personally used it in Docker images at all yet.
I'm also happy to receive a PR at any time, I'll have some limitations on my time but I'll try to give you feedback as soon as I can. You could also feel free to start a discussion on the Lucee dev forum if there's anything else you think we need to discuss in more detail.
@rye does everything work fine perfectly in a Lucee Alpine container? I was curious about doing that myself.
@arthurblake, to my cursory testing, it certainly seems so! Because everything is built on Java, I'd imagine the libc doesn't matter.
Apologies for the delay in getting that PR up, I got busy with some other stuff. Should be able to finally submit the PR in a couple of hours.
Is there any update on this?
Yes, the new repo and tags will be ready for the 5.3 releases, and the existing releases will use the existing repos. I have one more change to make to be able to trigger builds for a particular version number so that we can eventually automate the Docker images builds from the Lucee builds.
On Mon, 8 Oct. 2018, 12:13 am Jamie Jackson, notifications@github.com wrote:
Is there any update on this?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/lucee/lucee-dockerfiles/issues/40#issuecomment-427652490, or mute the thread https://github.com/notifications/unsubscribe-auth/AAVYDYWsbITK0M1df6U9vGXOtL6SYG62ks5uif38gaJpZM4SnP7V .
Currently, each Lucee minor version has its own Docker Hub repo; however, this is counterintuitive/unconventional.
For instance
lucee/lucee5
should (at the time of this writing) be equivalent to:lucee/latest
lucee/5.2
lucee/5.2.6
Examples of projects that use conventional versioning:
This would require more build plumbing, as noted by @justincarter (on Slack):