-
Notifications
You must be signed in to change notification settings - Fork 5.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Epic: Distributable Compose apps #1818
Comments
I've been thinking about this a bit, as it ties into #318. If the entire app can be pulled in that makes "including" it in another app much easier. I was thinking along the lines of keeping the compose file and the images separate. That way you can re-use the docker-registry to pull the images, all you need is a way to distribute the Sharing the
which would Publishing the app could be something like |
A good start could be to support GitHub, similar to what docker supports with E.g. |
I might be good to break down this problem into a few components:
I think a solution to each of these is should be pretty straightforward:
I think the undefined piece is "what gets published?". It's unlikely the |
Isn't this immutable artifact just a docker image? Roll-forward and roll-back would just be changing the image tag for each service (which ties back into the "what to publish" question) and running The only time that doesn't really work is persisted state (volumes), but trying to snapshot those is probably not realistic, or at least outside the scope of what we need to do here. Are there cases this approach doesn't cover? |
The immutable artifact for the whole app would be several docker images (one per service) plus a Compose file, as I understand it. It's basically "this is what is running".
Yeah, I feel like it's right to leave those out. |
A use case I think hasn't been considered is how one might use compose to provide an evaluation/test environment for an application. I'm working with atlassian/stash which would be better with extra pieces (lb,storage volume, db). Currently we have to publish multiple steps for users to run the pieces they need and hope they do it correctly. something simple like I also think adding support for the golang project format ( |
Would like to +1 this one. This is indeed a big missing feature which would close the build-publish-deploy-run loop quite nicely. Any decent size app will be multi-container based and having the extra step of obtaining the docker-compose YAML currently complicates people's life. |
I think it would also be useful to run also as |
Hey guys, you already have that...
almost 😜 |
@schmunk42 i have been used something similar using a github repository and a set of scripts and was working pretty well 😋 |
If anyone is still watching this issue, the effort around this has moved to https://github.com/docker/app - which leverages the Compose file format. Please have a look and give us your feedback! On the flipside, I'm going to close this as it has become out of scope for Compose itself. |
(This is closely related to #1784.)
The Docker image format, along with the Hub, registry and Dockerfile build system, constitute a really good way to distribute single-container software. There's no equivalent for multi-container applications. The closest you can get is a Compose file that references a bunch of images hosted elsewhere.
If there were a way to package up a whole multi-container app - its container's images and configuration - for one-step distribution and deployment (as simple as
docker push
,docker pull
anddocker run
make distributing single-container software), it would enable much smoother distribution of much more complex apps than a Docker registry can currently supply you with.This might entail designing an artifact that's generated from a Compose file, much as a container image is generated from a Dockerfile.
There are also interesting use cases regarding deployment and rollback - if you could serialise/deserialise between the state of an app and an immutable artifact, rolling back a deployment would become a single logical step.
The text was updated successfully, but these errors were encountered: