Curvytron / curvytron

A web multiplayer Tron game like with curves
http://www.curvytron.com
MIT License
306 stars 58 forks source link

Added docker #186

Open francisbesset opened 9 years ago

francisbesset commented 9 years ago

I purpose to add docker to build quickly the Curvytron server!

To build:

(curvytron) $ docker build -t curvytron .

To run:

$ docker run --name curvytron -p 80:8080 curvytron

Also, you can add this repository in Docker Hub to use docker pull.

Kiss :kiss:

Tom32i commented 9 years ago

Awesome :clap:

tristanbes commented 9 years ago

yay

emerick42 commented 9 years ago

Are you sure it's a good practice to RUN a single command combined with logical &&? Also I think the dependencies installation step should be done before the ADD, so it can be cached properly.

francisbesset commented 9 years ago

@emerick42 Good point! But the first Dockerfile built an image with a size of 303.4 MB. If I separate RUN to optimize the cache of different step, I have an image with a size of 537.6 MB.

emerick42 commented 9 years ago

Do you know why the container is larger?

francisbesset commented 9 years ago

Yes! Docker works same that git. Each statement (RUN, ENV, EXPOSE, CMD, ....) is committed. If you commit a statement, you commit the state of container.

In fact, the first Dockerfile, add dependencies in container but the dependencies are removed in same statement. In second Dockerfile, the first RUN statement is committed with dependencies.

You can use docker history curvytron to see each commit.

emerick42 commented 9 years ago

Ok, I got it. I think the second option is better, at least to respect Docker's way of doing things. Did you check on other official images if they were doing optimizations like this one?

francisbesset commented 9 years ago

The last version is better to rebuild quickly a new container. It's ~230 MB additional. To download the initial image from Docker Hub isn't dramatic.