I am working now on a similar task. I have pre-populated the maven repository
directory (~/.m2/repository) from the container that made the build (I am using
multi-stage images), and set
org.ops4j.pax.url.mvn.localRepository=/root/.m2/repository
In `etc/org.ops4j.pax.url.mvn.cfg`.
Is there anything else I need to make the image self contained? JB, can you
elaborate about your reference to the system folder?
Best regards,
Alex soto
> On Apr 14, 2020, at 2:13 AM, Jean-Baptiste Onofre <[email protected]> wrote:
>
> Hi,
>
> For the startup, you can already populate the system folder (by hand or using
> mvn deploy:deploy-file or mvn install:install-file).
>
> That’s what I’m doing in docker image preparation.
>
> Regards
> JB
>
>> Le 13 avr. 2020 à 21:09, Steinar Bang <[email protected]> a écrit :
>>
>> I have successfully created a docker image for my demo application based
>> on the official karaf 4.2.8 docker hub image.
>>
>> Here's what I did:
>>
>> 1. Copied etc/org.ops4j.pax.url.mvn.cfg from a karaf 4.2.8 instance,
>> and added my own maven repo
>>
>> https://gist.github.com/steinarb/62a070f6481d3e84c334a78f1c771e80#file-org-ops4j-pax-url-mvn-cfg-L113
>>
>> 2. Copied org.apache.karaf.features.cfg and added the feature repo of
>> the sample application
>>
>> https://gist.github.com/steinarb/fec331bcd37a0a7bdba850d33fcd0555#file-org-apache-karaf-features-cfg-L28
>> and added the sample application to the list of boot features
>>
>> https://gist.github.com/steinarb/fec331bcd37a0a7bdba850d33fcd0555#file-org-apache-karaf-features-cfg-L52
>>
>> 3. Created a Dockerfile adding to the official docker hub karaf 4.2.8
>> image, copying in the two modified config files
>>
>> https://gist.github.com/steinarb/444ad82a63dcf156101a064666ed590c#file-dockerfile-L1
>>
>> 4. Built the image from the Dockerfile
>> docker build -t steinarb/ukelonn-demo:v2 .
>>
>> 5. Started the image
>> docker run -p 8101:8101 -p 8181:8181 -d steinarb/ukelonn-demo:v2
>>
>> 6. The container took a while to start but eventually I could connect
>> to http://localhost:8181/ukelonn where I found the demo version of
>> my application running
>>
>> The downsides of this approach, are:
>> 1. Container startup is slow since features and their dependencies must
>> be downloaded
>>
>> 2. The maven repons may not be reachable at startup time and container
>> startup will fail
>>
>> 3. What the maven repos serve may potensially not be the same on each
>> startup
>>
>> All of the above is, I guess, sort of contrary to docker philosophy,
>> which is to pack up everything the application needs to start, so that
>> the application can be started in a predictable and reproducable manner.
>>
>> However, for this particular application, this is actually what I want:
>> I can create a docker image and deploy to docker hub, and on any docker
>> installation that can pull from dockerhub and can reach internet, I can
>> spin up the latest snapshot with the two commands "docker pull" and
>> "docker run".
>>
>