rochaporto / ezgliding

Website and software for analyzing, visualizing and planning gliding flights
GNU General Public License v3.0
5 stars 2 forks source link

setup a docker image for ezgliding web #55

Closed rochaporto closed 9 years ago

rochaporto commented 9 years ago

For reference, here's a tip to launch the docker daemon in a chromebook with crouton:

sudo /usr/bin/docker.io -d -b none --storage-driver=vfs

And then:

docker build -t ezgliding docker
rochaporto commented 9 years ago

A first try with:

FROM golang
WORKDIR /gopath/src/github.com/rochaporto/ezgliding
ADD . /gopath/src/github.com/rochaporto/ezgliding
RUN go get github.com/rochaporto/ezgliding
RUN go install github.com/rochaporto/ezgliding
ENTRYPOINT /gopath/bin/ezgliding web
EXPOSE 8000

works but has the disadvantage of actually rerunning the build to get the binary, which is not necessarily what we want for deployments. In particular it requires the golang image in FROM, so the resulting image is always bigger than 300MB, while the ezgliding binary is 9MB.

An alternative is described here: https://medium.com/@kelseyhightower/optimizing-docker-images-for-static-binaries-b5696e26eb07

and we could instead create the image directly from within travis including the resulting binary.

rochaporto commented 9 years ago

Relevant links from the previous comment: https://blog.golang.org/docker

and the magic of automated builds in dockerhub, though we might end up not using them: http://docs.docker.com/userguide/dockerrepos/#automated-builds

rochaporto commented 9 years ago

With some like:

FROM scratch
MAINTAINER Ricardo Rocha <rocha.porto@gmail.com>
ADD ezgliding ezgliding
EXPOSE 8000
ENTRYPOINT ["/ezgliding"]

it looks pretty good:

# sudo docker build -t ezgliding .
Sending build context to Docker daemon 21.39 MB
Sending build context to Docker daemon 
Step 0 : FROM scratch
Pulling repository scratch
511136ea3c5a: Download complete 
 ---> 511136ea3c5a
Step 1 : MAINTAINER Ricardo Rocha <rocha.porto@gmail.com>
 ---> Running in 3136603cb9c3
 ---> aacd3791a68a
Removing intermediate container 3136603cb9c3
Step 2 : ADD ezgliding ezgliding
 ---> 11065f0a4972
Removing intermediate container ae93e510fefc
Step 3 : EXPOSE 8000
 ---> Running in c58d4efb1690
 ---> e909d3fa7142
Removing intermediate container c58d4efb1690
Step 4 : ENTRYPOINT ["/ezgliding"]
 ---> Running in b619c8c18e9e
 ---> ecdfa8e8f83b
Removing intermediate container b619c8c18e9e
Successfully built ecdfa8e8f83b