
Show HN: DCPM – Docker Compose Package Manager - hasmolo
Hey y&#x27;all,<p>I&#x27;ve been using docker compose a lot in my local network, and managing setup between machines is a bit of a pain in the ass for me. I wanted an easy way to share complex configurations. At the moment most docker compose package management is done by adding a docker-compose.yml to your repo, adding a bunch of setup instructions, and hoping they are well followed. This didn&#x27;t feel like a smart way to go about it to me.<p>I wanted to create a way to create a complex package, say a series of related or linked services, and provide some meaningful way to have users install it. That&#x27;s why I built DCPM. It provides a few things for you:<p><pre><code>  1. A nice CLI to interact with
  2. A place to store these files and configuration
  3. A way to setup new projects that&#x27;s not just reading a readme
</code></pre>
To achieve these goals I built the @dcpm&#x2F;cli and blobs.dcpm.dev. The cli allows you to upload and download blobs, and the back end allows you to have a persistent storage to use. I&#x27;ve also built a really simple front end for searching packages.<p>This is a very early alpha. There is a lot left to improve, but I feel enough of the core concepts are here to get some early feedback and improve the tool. Any and all feedback are super welcome. Here are some links for you:<p>Docs: <a href="https:&#x2F;&#x2F;docs.dcpm.dev" rel="nofollow">https:&#x2F;&#x2F;docs.dcpm.dev</a><p>Search: <a href="https:&#x2F;&#x2F;app.dcpm.dev" rel="nofollow">https:&#x2F;&#x2F;app.dcpm.dev</a><p>CLI: <a href="https:&#x2F;&#x2F;www.npmjs.com&#x2F;package&#x2F;@dcpm&#x2F;cli" rel="nofollow">https:&#x2F;&#x2F;www.npmjs.com&#x2F;package&#x2F;@dcpm&#x2F;cli</a><p>GitHub: <a href="https:&#x2F;&#x2F;github.com&#x2F;hweeks&#x2F;dcpm" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;hweeks&#x2F;dcpm</a><p>fyi: there&#x27;s a nonzero chance that the DB will be wiped once we exit alpha and enter beta<p>- hamsolo&#x2F;hweeks
======
gitgud
Docker-compose has always been a great little tool to spin up a collection of
integrated services (like a LAMP stack). It has just the right level of
complexity for many projects.

Packaging these collections up as reusable apps is smart, but isn't this what
kubernetes helm charts are?

From first glance the "Search" domain is very unintuitive. I typed in "web"
and "app" with no results. Your better off showing a list of most downloaded
or something similar to npm's search.

> _" fyi: there's a nonzero chance that the DB will be wiped once we exit
> alpha and enter beta"_

This is honest, but it's not a good look to lose data. If it's possible,
simply backup the data between updates... I wouldn't trust something that
wipes my data.

Anyway great little project, hope it continues and grows.

------
drizze
FYI you have a ref to 0.0.0.0:8000 as your homepage from the docs.dcpm.dev
link

<a href="[http://0.0.0.0:8000/"](http://0.0.0.0:8000/") title="Docker Compose
Package Manager" aria-label="Docker Compose Package Manager" class="md-header-
nav__button md-logo">

edit: looks like a cool project though! congrats on shipping!

~~~
hasmolo
thanks, I'll push a fix

------
nodesocket
Is there a cleaner way to drop a user into a shell of a docker container with
ports exposed instead of doing:

    
    
      services:
        web:
          entrypoint: /bin/bash
    

And then:

    
    
      docker-compose run --service-ports web

~~~
yjftsjthsd-h
docker-compose exec?

~~~
nodesocket
So would just be:

docker-compose exec web /bin/bash

Saves having to add --service-ports

~~~
castis
exec only works on specific running containers so you'll need the container id
for this

    
    
        exec -ti f635776c2d08 /bin/bash
    

i do this often enough that i keep this in a makefile so i can do it by image
name

    
    
        docker exec -ti `docker ps | grep 'container-name' | awk '{print $$1}'` /bin/bash

~~~
yjftsjthsd-h
You only need to specify the container by ID if you're using docker directly;
if you use docker-compose then you can use the service name and you don't need
the `-ti`

------
barell
Would be nice to see some example. When I open search there are no results.

~~~
hasmolo
Here's my base package

[https://app.dcpm.dev/package/home-media](https://app.dcpm.dev/package/home-
media)

