From 4da73006fa48d4eaa672c43561d8782cac5943b8 Mon Sep 17 00:00:00 2001 From: Erik Huelsmann Date: Thu, 25 May 2017 15:12:09 +0200 Subject: [PATCH 1/4] * Minimize the size of the image (went from 2.6GB to 1.4GB!) --- Dockerfile | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 23a5157..d871343 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,9 @@ FROM perl:5 MAINTAINER Freelock john@freelock.com +RUN echo -n "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";\n" >> /etc/apt/apt.conf + + # Install Perl, Tex, Starman, psql client, and all dependencies RUN DEBIAN_FRONTENT=noninteractive && \ apt-get update && apt-get -y install \ @@ -27,7 +30,6 @@ RUN DEBIAN_FRONTENT=noninteractive && \ # Java & Nodejs for doing Dojo build #RUN DEBIAN_FRONTENT=noninteractive && apt-get install -y openjdk-7-jre-headless RUN apt-get install -y npm -RUN npm install uglify-js@">=2.0 <3.0" RUN update-alternatives --install /usr/bin/node nodejs /usr/bin/nodejs 100 # Build time variables @@ -40,13 +42,17 @@ RUN cd /srv && \ WORKDIR /srv/ledgersmb -# 1.5 requirements +# master requirements RUN cpanm --quiet --notest \ --with-feature=starman \ --with-feature=latex-pdf-ps \ --with-feature=openoffice \ --installdeps . +# Uglify needs to be installed right before 'make dojo'?! +RUN npm install -g uglify-js@">=2.0 <3.0" +ENV NODE_PATH /usr/local/lib/node_modules + # Build dojo RUN make dojo From 22ac547e948ccc80935bf15181701baad1e31d21 Mon Sep 17 00:00:00 2001 From: Erik Huelsmann Date: Thu, 1 Jun 2017 08:05:04 +0200 Subject: [PATCH 2/4] * Reduce image size further by changing base image --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index d871343..1896419 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM perl:5 +FROM debian:jessie MAINTAINER Freelock john@freelock.com RUN echo -n "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";\n" >> /etc/apt/apt.conf @@ -25,7 +25,7 @@ RUN DEBIAN_FRONTENT=noninteractive && \ libopenoffice-oodoc-perl \ postgresql-client \ ssmtp \ - git + git cpanminus make gcc libperl-dev lsb-release # Java & Nodejs for doing Dojo build #RUN DEBIAN_FRONTENT=noninteractive && apt-get install -y openjdk-7-jre-headless From 4a8d6dc6b6309810feadc5dd7a14ed8f8e950369 Mon Sep 17 00:00:00 2001 From: Erik Huelsmann Date: Tue, 20 Jun 2017 00:36:22 +0200 Subject: [PATCH 3/4] * Reorganize Dockerfile to optimize image size --- Dockerfile | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1896419..4971ce3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ RUN echo -n "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";\n" >> # Install Perl, Tex, Starman, psql client, and all dependencies -RUN DEBIAN_FRONTENT=noninteractive && \ +RUN DEBIAN_FRONTEND=noninteractive && \ apt-get update && apt-get -y install \ libcgi-emulate-psgi-perl libcgi-simple-perl libconfig-inifiles-perl \ libdbd-pg-perl libdbi-perl libdatetime-perl \ @@ -25,36 +25,36 @@ RUN DEBIAN_FRONTENT=noninteractive && \ libopenoffice-oodoc-perl \ postgresql-client \ ssmtp \ - git cpanminus make gcc libperl-dev lsb-release + lsb-release -# Java & Nodejs for doing Dojo build -#RUN DEBIAN_FRONTENT=noninteractive && apt-get install -y openjdk-7-jre-headless -RUN apt-get install -y npm -RUN update-alternatives --install /usr/bin/node nodejs /usr/bin/nodejs 100 # Build time variables ENV LSMB_VERSION master +ENV NODE_PATH /usr/local/lib/node_modules +ENV DEBIAN_FRONTEND=noninteractive + ARG CACHEBUST -# Install LedgerSMB -RUN cd /srv && \ - git clone --recursive -b $LSMB_VERSION https://github.com/ledgersmb/LedgerSMB.git ledgersmb - -WORKDIR /srv/ledgersmb - -# master requirements -RUN cpanm --quiet --notest \ - --with-feature=starman \ - --with-feature=latex-pdf-ps \ - --with-feature=openoffice \ - --installdeps . +# Java & Nodejs for doing Dojo build # Uglify needs to be installed right before 'make dojo'?! -RUN npm install -g uglify-js@">=2.0 <3.0" -ENV NODE_PATH /usr/local/lib/node_modules - -# Build dojo -RUN make dojo +RUN apt-get -y install git make gcc libperl-dev npm curl && \ + update-alternatives --install /usr/bin/node nodejs /usr/bin/nodejs 100 && \ + cd /srv && \ + git clone --recursive -b $LSMB_VERSION https://github.com/ledgersmb/LedgerSMB.git ledgersmb && \ + cd ledgersmb && \ + curl -L https://cpanmin.us | perl - App::cpanminus && \ + cpanm --quiet --notest \ + --with-feature=starman \ + --with-feature=latex-pdf-ps \ + --with-feature=openoffice \ + --installdeps . && \ + npm install -g uglify-js@">=2.0 <3.0" && \ + make dojo && \ + apt-get purge -y npm git make gcc libperl-dev nodejs curl && \ + rm -rf /usr/local/lib/node_modules && \ + apt-get autoremove -y && \ + apt-get autoclean # Configure outgoing mail to use host, other run time variable defaults From e4f4d319226edb80c99cf3daeb5ce644427b6bb9 Mon Sep 17 00:00:00 2001 From: Erik Huelsmann Date: Wed, 21 Jun 2017 00:12:53 +0200 Subject: [PATCH 4/4] * Remove more build artifacts from the container --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 4971ce3..e75cc8b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -54,7 +54,8 @@ RUN apt-get -y install git make gcc libperl-dev npm curl && \ apt-get purge -y npm git make gcc libperl-dev nodejs curl && \ rm -rf /usr/local/lib/node_modules && \ apt-get autoremove -y && \ - apt-get autoclean + apt-get autoclean && \ + rm -rf ~/.cpanm # Configure outgoing mail to use host, other run time variable defaults