Closed rochaporto closed 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.
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
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
For reference, here's a tip to launch the docker daemon in a chromebook with crouton:
And then: