Как минимизировать образ докера Ubuntu, для которого нужны только git, cron и openjdk-8-jre - PullRequest
0 голосов
/ 18 октября 2018

Тестирование некоторого проекта Docker, поэтому после игры с Alpine я хотел бы использовать Ubuntu: Bionic для производства.Я решил выкатить свой собственный образ, но проблема в том, что это 600 МБ +.

REPOSITORY                               TAG                  IMAGE ID            CREATED             SIZE
ubuntucronjava                           latest              101aed049a54        6 minutes ago       600MB
<none>                                   <none>              d0298b733b5f        13 minutes ago      610MB

Ниже приведен мой dockerfile

ROM ubuntu:bionic

RUN apt-get update

RUN DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y -q software-properties-common

RUN apt-get --no-install-recommends -y install cron openjdk-8-jre git-core curl python-pip && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
mkdir -p /opt/cert/gitlab  /opt/features && \
chmod -R  777 /opt/* && \
touch /var/log/gitcron.log

ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk-amd64
ENV GIT_URL https://xxxx:yyyyy@gitzzzzzzz.com/smartgrid/core-platform/deployment/dev/home.git

COPY cert/ /opt/cert/gitlab/

RUN git config --global http.sslCert /opt/cert/gitlab/gitlab.xxxxxxxxxxx_client.crt && \
git config --global http.sslKey /opt/cert/gitlab/gitlab.xxxxxxxxx_client.key && \
echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64" >> ~/.bashrc && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
git clone $GIT_URL /opt/features

RUN (crontab -l ; echo "* * * * *  sh -c 'cd /opt/features && git pull' >> /var/log/gitcron.log") | crontab

CMD cron && tail -f /var/log/gitcron.log

Я заметил, что некоторые пакеты устанавливаются, например, adwaita-icon-theme или x11-common, что я сомневаюсь, что они действительно нужны в этом docker ubuntuсерверный контейнер.Ниже приведен фрагмент вывода

The following additional packages will be installed:
  adwaita-icon-theme ca-certificates-java dconf-gsettings-backend
  dconf-service fontconfig fontconfig-config fonts-dejavu-core git-man
  glib-networking glib-networking-common glib-networking-services
  gsettings-desktop-schemas gtk-update-icon-cache hicolor-icon-theme
  humanity-icon-theme java-common libasn1-8-heimdal libasound2 libasound2-data
  libasyncns0 libatk-bridge2.0-0 libatk-wrapper-java libatk-wrapper-java-jni
  libatk1.0-0 libatk1.0-data libatspi2.0-0 libavahi-client3
  libavahi-common-data libavahi-common3 libbsd0 libcairo-gobject2 libcairo2
  libcolord2 libcroco3 libcups2 libcurl3-gnutls libcurl4 libdatrie1 libdconf1
  libdrm-amdgpu1 libdrm-common libdrm-intel1 libdrm-nouveau2 libdrm-radeon1
  libdrm2 libedit2 libegl-mesa0 libegl1 libelf1 libepoxy0 liberror-perl
  libflac8 libfontconfig1 libfontenc1 libfreetype6 libgbm1 libgdbm-compat4
  libgdbm5 libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgif7 libgl1
  libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libglvnd0 libglx-mesa0 libglx0
  libgraphite2-3 libgssapi-krb5-2 libgssapi3-heimdal libgtk-3-0
  libgtk-3-common libharfbuzz0b libhcrypto4-heimdal libheimbase1-heimdal
  libheimntlm0-heimdal libhx509-5-heimdal libice6 libicu60 libjbig0
  libjpeg-turbo8 libjpeg8 libjson-glib-1.0-0 libjson-glib-1.0-common
  libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0
  liblcms2-2 libldap-2.4-2 libldap-common libllvm6.0 libnghttp2-14 libnspr4
  libnss3 libogg0 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0
  libpciaccess0 libpcsclite1 libperl5.26 libpixman-1-0 libpng16-16 libproxy1v5
  libpsl5 libpulse0 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib
  librest-0.7-0 libroken18-heimdal librsvg2-2 librsvg2-common librtmp1
  libsasl2-2 libsasl2-modules-db libsensors4 libsm6 libsndfile1
  libsoup-gnome2.4-1 libsoup2.4-1 libthai-data libthai0 libtiff5 libvorbis0a
  libvorbisenc2 libwayland-client0 libwayland-cursor0 libwayland-egl1-mesa
  libwayland-server0 libwind0-heimdal libwrap0 libx11-6 libx11-data
  libx11-xcb1 libxau6 libxaw7 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0
  libxcb-present0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1
  libxcb-xfixes0 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxdmcp6
  libxext6 libxfixes3 libxft2 libxi6 libxinerama1 libxkbcommon0 libxml2
  libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxshmfence1 libxt6
  libxtst6 libxv1 libxxf86dga1 libxxf86vm1 multiarch-support
  openjdk-8-jre-headless perl perl-modules-5.26 python python-minimal
  python-pip-whl python2.7 python2.7-minimal shared-mime-info ubuntu-mono ucf
  x11-common x11-utils xkb-data

Полный вывод сборки здесь на pastebin.com .Буду признателен, если есть способы удаления ненужных пакетов и уменьшения размера изображения.

С наилучшими пожеланиями

...