docker / compose

Define and run multi-container applications with Docker
https://docs.docker.com/compose/
Apache License 2.0
33.01k stars 5.11k forks source link

Release with all vendor dependencies #11760

Open catap opened 2 months ago

catap commented 2 months ago

Description

Good day,

Is it possible to add to release a distirbutive which contains all vendor dependencies?

It should make life of package managers much easier.

Thanks!

ndeloof commented 2 months ago

Can't you just rely on go.mod for this purpose? What's the challenge you have to address as a package manager?

catap commented 2 months ago

Yes, I can. Right now I need to pack vedors folder as dedicated archive to make an offline build. Without it build of docker-compose needs an internet to download everything.

The issue that usual workflow for build a pachage is:

go mod nice solution but it should be run after extract that means fetch stage isn't complete, and if other stages goes without internet connection, build fails.

Just an observation: docker-buildx and docker-cli provides such archive.

ndeloof commented 2 months ago

both buildx and docker cli projects adopted a vendor folder inside repository, which we don't. This is a long debate, but compose maintainers don't consider this to be a good practice. the source zip archive produced by github during release from tag only contains a git shapshot, so is obviously missing such a vendor folder. If you have a requirement to build offline, then indeed you'll need your pipeline to include an additional do mod download step after extraction

catap commented 2 months ago

Right now I host such artifacts on my host for OpenBSD artifacts for example, see: https://github.com/openbsd/ports/blob/master/sysutils/docker-compose/Makefile

Maybe it isn't so bad idea to prepare one more release artifcat via githib actions? I don't ask to include vendor into sources, just make one more artifact which I may use as source for future updates.

ndeloof commented 2 months ago

right, feel free to offer us a pull request for this purpose :)