Optimized Dockerfile for smaller image size

I have modified the official Dockerfile and made two changes

- Each RUN instruction creates an additional layer in the docker image. Adding files in one RUN instruction and deleting it in another RUN instruction will not reduce the size of the image. I used a single RUN command so that all the package/file removal happens in the same command in which the package installation happens, so that no additional layers are created.
- Similar to RUN statement, ADD instruction also creates an additional layer. Using git clone in the RUN statement and deleting it within the same statement ensures that an additional layer with source files is not added.
This commit is contained in:
Joyce Babu 2016-04-19 13:43:22 +05:30
parent 684400fe76
commit 8482f665f6

View file

@ -3,15 +3,12 @@ FROM alpine:3.3
ENV GOPATH /go ENV GOPATH /go
RUN apk update && apk add ca-certificates go git && \ RUN apk update && apk add ca-certificates go git && \
rm -rf /var/cache/apk/* rm -rf /var/cache/apk/* && \
go get -u github.com/xenolf/lego && \
COPY . /go/src/github.com/xenolf/lego cd /go/src/github.com/xenolf/lego && \
go build -o /usr/bin/lego . && \
RUN cd /go/src/github.com/xenolf/lego && \ apk del ca-certificates go git && \
go get ./... && \ rm -rf /var/cache/apk/* && \
go build -o /usr/bin/lego . && \ rm -rf /go
apk del ca-certificates go git && \
rm -rf /var/cache/apk/* && \
rm -rf /go
ENTRYPOINT [ "/usr/bin/lego" ] ENTRYPOINT [ "/usr/bin/lego" ]