intersystems / ipm

InterSystems ObjectScript Package Manager
MIT License
29 stars 19 forks source link

How to install IPM client to a custom container image economically? #625

Open janihur opened 1 week ago

janihur commented 1 week ago

I'm creating a customized IRIS Docker image and installing IPM to the image.

An unfortunate side effect is that IPM installation affects the system database that increases the image size by 2.7GB. The size increase can be mostly mitigated with a multi-stage build (down to ~130MB), see e.g. grongierisc/iris-docker-multi-stage-script. However I'm not completely satisfied to this method as one still have to touch the system database. However AFAIK this seems to be the best option at the moment or do you have any other ideas?

In the long term I'd like to see IPM an integral out-of-the-box IRIS utility (in the same fashion than e.g. %Unittest) with the self-update ability.

isc-tleavitt commented 6 days ago

@janihur see https://github.com/intersystems-community/zpm-dockerhub/blob/master/Dockerfile which:

"Integral out-of-the-box IRIS utility" is in the works, although to support self-update it's going to be a little different (specifically, won't be in IRISLIB).

evshvarov commented 6 days ago

@janihur take a look this article https://community.intersystems.com/post/keep-your-docker-iris-images-shape

On Tue, 19 Nov 2024 at 13:09, Tim Leavitt @.***> wrote:

@janihur https://github.com/janihur see https://github.com/intersystems-community/zpm-dockerhub/blob/master/Dockerfile which:

  • Is also published to Docker Hub
  • Is going to change significantly very, very soon with the release of 0.9 (I'm actively looking at this)

"Integral out-of-the-box IRIS utility" is in the works, although to support self-update it's going to be a little different (specifically, won't be in IRISLIB).

— Reply to this email directly, view it on GitHub https://github.com/intersystems/ipm/issues/625#issuecomment-2485673068, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAVHEPZ7J2C6WUMA4BT6Q3D2BM2CDAVCNFSM6AAAAABSBLZS22VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIOBVGY3TGMBWHA . You are receiving this because you are subscribed to this thread.Message ID: @.***>

janihur commented 6 days ago

@isc-tleavitt If I read correctly https://github.com/intersystems-community/zpm-dockerhub/blob/727ef174fbaf40386d37ad5e08066253c0522d35/Dockerfile#L3 this is the "magic sauce" to install the IPM into dedicated database and then made available to all other namespaces by mapping? Cool!

This is yet another IPM related "recipe" that should be part of the famous "IPM for Dummies" book ;) thought this might be temporary solution.

I bookmark this now and wait for the very, very soon ;) released v0.9. I'll apply the new practice then to my image too and report it here (and close the ticket).

janihur commented 6 days ago

@evshvarov If you read the question carefully you'd see I'm already applying the multi-stage build trick I found from grongierisc/iris-docker-multi-stage-script. The article seems to have exactly the same content ;) The article is still nice and I bookmarked it (you should label the article as a best practice)!