

Docker and StriderCD: Brilliant Continuous Integration In A Box - niall_ohiggins
http://blog.frozenridge.co/docker-and-stridercd-brilliant-continuous-integration-in-a-box/

======
timr
For those of you looking for a hosted CI system, I highly, highly recommend
CircleCI...we've been using it for continuous deployment, and it's been just
about perfect. It's one of those tools that Just Works, and makes your life a
little bit easier.

~~~
malandrew
How does it compare to the other hosted CI solutions for private repos out
there?

~~~
arohner
Hi, founder of Circle here.

Our focus is on developer productivity. That means we try to make things fast,
reliable and low overhead.

As far as differentiators, we're pretty fast. We can automatically parallelize
your test suite across N VMs. We automatically inspect your source tree, and
figure out how to run the tests, without configuration. It's not perfect, but
a substantial percentage of customers get a working build on their first try.

We have some pretty cool features in the pipeline that haven't been in
generally available products, we hope to blow peoples' minds with them when
they're released :-)

Let me know if there's anything else I can answer.

~~~
timr
_" As far as differentiators, we're pretty fast. We can automatically
parallelize your test suite across N VMs. We automatically inspect your source
tree, and figure out how to run the tests, without configuration. It's not
perfect, but a substantial percentage of customers get a working build on
their first try."_

Yes, yes and YES.

I love that there's a comment in this thread that claims that CI systems have
to be like Jenkins to be marketable. CircleCI was great precisely _because_ it
worked basically out of the box, and then the configuration to get it to do
more complicated stuff (like, say, running migrations) was as easy as
specifying a unix command.

I set up our CI system on CircleCI in an afternoon, and we haven't had to
touch it since. That's pretty remarkable.

------
StavrosK
Docker sounds brilliant, but I haven't had much luck with deploying my
(moderately complex) Django apps on it. For example, I want the postgres db
data to live outside the container, but volumes can't currently do that with
Dockerfiles: they're initialized at "docker build" and then the files are just
overwritten when trying to mount an external volume.

Another use case is trying to spin up a development container (where the code
resides on the host), but, again, shared volumes overwrite the directory. You
can ADD your code initially and then mount the volume when you run it, but
it's added hassle.

~~~
shykes
Hey StavrosK,

This is by design, " _I want the postgres db data to live outside the
container_ " is a deployment-specific decision, and should not be hardcoded
into the container itself. You (or someone you distribute this container to)
might _not_ want the db data to live outside the container, or might want it
to live at a specific path on his machine. That's why a Dockerfile lets you
specify that /var/lib/postgres is persistent, but doesn't let you specify
_how_ to persist it.

Now, if I remember our IRC discussion correctly, in your case you're hitting a
limitation of docker's implementation of volumes, which is that the container
cannot specify an initial state for its volume - it can only start empty. That
is a limitation that we're going to fix. But we need to make sure we fix it
without breaking portability of containers.

I hope this helps.

~~~
zgohr
Hey shykes,

This is something I'm still not quite clear on. According to the issues in
mention here:
[https://github.com/dotcloud/docker/issues/1185](https://github.com/dotcloud/docker/issues/1185)
it is possible to do what StavrosK is asking. What am I missing? Why would a
volume need an initial state when when the goal can be accomplished with a
bind mount?

I also +1'd the documentation issue because I can't seem to wrap my head
around what the current state of volumes and mounting is. Appreciate any
direction you could point me in.

~~~
shykes
> _Why would a volume need an initial state when when the goal can be
> accomplished with a bind mount?_

This is in the special case where you want the application itself to determine
the initial state of the volume. For example, the _developer_ might want the
database pre-loaded with a certain schema, default data and so on. External
volumes/bind mounts are a way for the _sysadmin_ to override how and where the
contents of a volume are stored.

Re: documentation, you can take a look at this example:
[http://docs.docker.io/en/latest/examples/couchdb_data_volume...](http://docs.docker.io/en/latest/examples/couchdb_data_volumes/)

I hope this helps! Feel free to join the IRC channel (#docker on freenode),
it's unusually active and helpful, I'm very proud of how nice the people are
on there :)

------
nickstinemates
I just set this up accessible over the internet, building my blog. I've since
removed the service/webhooks, but feel free to login at
[http://stinemat.es:3000](http://stinemat.es:3000) to play around. It's
extremely cool.

~~~
asabjorn
Do you have a demo account or an invite code we can use to register?

~~~
nickstinemates
The demo account is available on the blog post :)

------
routelastresort
I had major problems with Strider's web interface (running from a Docker
instance) just dying on me. I think it's got a long way to go before it's a
viable replacement/equivalent for Travis-CI.

~~~
niall_ohiggins
We haven't seen that bug.
[https://hosted.stridercd.com](https://hosted.stridercd.com) runs on Docker.
We'd love to fix this for you.

Can you file a bug at [http://github.com/Strider-
CD/strider](http://github.com/Strider-CD/strider)?

Many thanks and sorry you are having issues.

------
tombh
Did it take anyone else ages to download all the files from `docker pull
strider/strider'? Was taking over 30 mins for me, so I gave up and installed
everything by hand without docker in about 5 mins!

~~~
shykes
Hi, docker maintainer here.

The docker registry is getting hit really hard because of the explosive growth
of the project - we're in the process of upgrading the infrastructure, should
get much better very soon.

~~~
tombh
It's a good problem to have I guess :)

------
andridk
Ah, this is deploying StriderCD with Docker, and not the other way the around.
Was really hoping to see a build server that could spit out Docker images :)

~~~
niall_ohiggins
That is also in the pipeline :)

------
francesca
this is awesome. well done.

