From d68be71a3fcda521493a794e0273e7060d030be1 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Sat, 22 Nov 2014 19:42:54 +0100 Subject: [PATCH] Optimize Dockerfile. This optimizes the Dockerfile by; - Combining RUN statements so that files are removed in the same layer as they are added. - Removing the downloaded .tar.gz of the docker-gen binary after expanding - Adding `--no-install-recommends` (but explicitly installing ca-certificates) - Replacing `ADD` with `COPY` (recommended if no unpacking is required) Also added a `.dockerignore` file to prevent the `.git` directory and README.md being added to the image. These changes reduce the size of the image with 34 MB (was 268.4 MB, now 233.9 MB), and results in less layers being produced. Signed-off-by: Sebastiaan van Stijn --- .dockerignore | 2 ++ Dockerfile | 40 +++++++++++++++++++++++----------------- 2 files changed, 25 insertions(+), 17 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..35cdaf3 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +.git +README.md diff --git a/Dockerfile b/Dockerfile index 821e6d5..5c5b258 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,28 +2,34 @@ FROM ubuntu:14.04 MAINTAINER Jason Wilder jwilder@litl.com # Install Nginx. -RUN echo "deb http://ppa.launchpad.net/nginx/stable/ubuntu trusty main" > /etc/apt/sources.list.d/nginx-stable-trusty.list -RUN echo "deb-src http://ppa.launchpad.net/nginx/stable/ubuntu trusty main" >> /etc/apt/sources.list.d/nginx-stable-trusty.list -RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C -RUN apt-get update -RUN apt-get install --only-upgrade bash -RUN apt-get install -y wget nginx +RUN echo "deb http://ppa.launchpad.net/nginx/stable/ubuntu trusty main" > /etc/apt/sources.list.d/nginx-stable-trusty.list \ + && echo "deb-src http://ppa.launchpad.net/nginx/stable/ubuntu trusty main" >> /etc/apt/sources.list.d/nginx-stable-trusty.list \ + && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C \ + && apt-get update \ + && apt-get install -y -q --no-install-recommends \ + ca-certificates \ + nginx \ + wget \ + && apt-get clean \ + && rm -r /var/lib/apt/lists/* -RUN echo "daemon off;" >> /etc/nginx/nginx.conf +# Configure Nginx and apply fix for long server names +RUN echo "daemon off;" >> /etc/nginx/nginx.conf \ + && sed -i 's/# server_names_hash_bucket/server_names_hash_bucket/g' /etc/nginx/nginx.conf -#fix for long server names -RUN sed -i 's/# server_names_hash_bucket/server_names_hash_bucket/g' /etc/nginx/nginx.conf - -RUN wget -P /usr/local/bin https://godist.herokuapp.com/projects/ddollar/forego/releases/current/linux-amd64/forego -RUN chmod u+x /usr/local/bin/forego + # Install Forego +RUN wget -P /usr/local/bin https://godist.herokuapp.com/projects/ddollar/forego/releases/current/linux-amd64/forego \ + && chmod u+x /usr/local/bin/forego ENV DOCKER_GEN_VERSION 0.3.4 -RUN wget https://github.com/jwilder/docker-gen/releases/download/$DOCKER_GEN_VERSION/docker-gen-linux-amd64-$DOCKER_GEN_VERSION.tar.gz -RUN tar -C /usr/local/bin -xvzf docker-gen-linux-amd64-$DOCKER_GEN_VERSION.tar.gz -RUN mkdir /app -WORKDIR /app -ADD . /app +RUN wget https://github.com/jwilder/docker-gen/releases/download/$DOCKER_GEN_VERSION/docker-gen-linux-amd64-$DOCKER_GEN_VERSION.tar.gz \ + && tar -C /usr/local/bin -xvzf docker-gen-linux-amd64-$DOCKER_GEN_VERSION.tar.gz \ + && rm /docker-gen-linux-amd64-$DOCKER_GEN_VERSION.tar.gz + +COPY . /app/ +WORKDIR /app/ + EXPOSE 80 ENV DOCKER_HOST unix:///tmp/docker.sock