Skip to content

Commit

Permalink
Reduce teh image size
Browse files Browse the repository at this point in the history
- Reduced the image size from 1.3G to 400MB

Signed-off-by: Dimal Baby <dbaby@vmware.com>
  • Loading branch information
dimalbaby committed Jun 23, 2020
1 parent 8db291e commit c99a9d6
Showing 1 changed file with 38 additions and 45 deletions.
83 changes: 38 additions & 45 deletions base-image/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,63 +1,56 @@
# Copyright © 2018 VMware, Inc. All Rights Reserved.
# SPDX-License-Identifier: BSD-2-Clause
# Similar to https://github.com/drecom/docker-centos-ruby/blob/2.6.5-slim/Dockerfile

FROM photon:3.0
ARG RUBY_PATH=/usr/local
ARG RUBY_VERSION=2.6.5

# rever user fluent from parent
USER root
FROM photon:3.0 AS rubybuild
ARG RUBY_PATH
ARG RUBY_VERSION
RUN tdnf erase -y toybox && tdnf install -y bzip2 shadow wget which vim less tar gzip util-linux sed gcc build-essential zlib-devel libedit libedit-devel gdbm gdbm-devel openssl-devel systemd net-tools git

COPY basegems/Gemfile Gemfile
RUN git clone git://github.com/rbenv/ruby-build.git $RUBY_PATH/plugins/ruby-build \
&& $RUBY_PATH/plugins/ruby-build/install.sh \
&& ruby-build $RUBY_VERSION $RUBY_PATH/ \
&& gem install -g --file Gemfile \
&& gem uninstall rake -v 12.3.2 \
&& gem uninstall bigdecimal -v 1.4.1

FROM photon:3.0
ARG RUBY_PATH
ENV PATH $RUBY_PATH/bin:$PATH
COPY --from=rubybuild $RUBY_PATH $RUBY_PATH
# Not sure why this is needed: see https://github.com/fluent/fluentd-kubernetes-daemonset/blob/master/docker-image/v1.4/debian-elasticsearch/Dockerfile
ENV FLUENTD_DISABLE_BUNDLER_INJECTION 1

# start with a valid empty file
COPY failsafe.conf /fluentd/failsafe.conf

# custom entrypoint
COPY entrypoint.sh /fluentd/entrypoint.sh

# list gems here
COPY Gemfile /fluentd
USER root

ENTRYPOINT ["/fluentd/entrypoint.sh"]

RUN tdnf update -y && tdnf upgrade -y && tdnf erase -y toybox
RUN tdnf install -y shadow wget which vim less tar gzip util-linux sed gcc build-essential zlib1g-dev zlib-devel libedit libedit-devel gdbm gdbm-devel openssl-devel systemd net-tools

RUN curl -o ruby.tgz https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.5.tar.gz \
&& tar xvzf ruby.tgz \
&& cd ruby-2.6.5 \
&& ./configure && make && make install

COPY basegems/Gemfile Gemfile
RUN gem install -g --file Gemfile && mv Gemfile Gemfile.base

ENV FLUENTD_CONF=""
ENV FLUENTD_DISABLE_BUNDLER_INJECTION 1
ENV PATH /fluentd/vendor/bundle/ruby/2.6.0/bin:$PATH

RUN mkdir -p /fluentd/log /fluentd/etc /fluentd/plugins
# list gems here
COPY Gemfile /fluentd

RUN buildDeps="\
gmp-devel libffi-devel" \
&& tdnf install -y $buildDeps \
&& echo 'gem: --no-document' >> /etc/gemrc \
&& bundle config silence_root_warning true \
&& wget https://github.com/vmware/fluent-plugin-vmware-log-intelligence/releases/download/v2.0.0/fluent-plugin-vmware-log-intelligence-2.0.0.gem \
&& bundle install --gemfile=/fluentd/Gemfile \
&& fluent-gem install --local fluent-plugin-vmware-log-intelligence-2.0.0.gem \
&& tdnf clean all \
&& tdnf remove -y $buildDeps \
&& gem sources --clear-all \
&& rm -rf /tmp/* /var/tmp/* /usr/lib/ruby/gems/*/cache/*.gem /fluent-plugin-vmware-log-intelligence-2.0.0.gem ruby.tgz ruby-2.6.5
RUN mkdir -p /fluentd/log /fluentd/etc /fluentd/plugins /usr/local/bundle/bin/ \
&& tdnf erase -y toybox \
&& buildDeps="\
gmp-devel libffi-devel bzip2 shadow wget which vim less tar gzip sed gcc build-essential zlib-devel libedit libedit-devel gdbm gdbm-devel openssl-devel" \
&& tdnf install -y $buildDeps util-linux systemd net-tools\
&& wget https://raw.githubusercontent.com/fluent/fluentd-kubernetes-daemonset/master/docker-image/v1.4/debian-elasticsearch/plugins/parser_kubernetes.rb -P /fluentd/plugins \
&& wget https://raw.githubusercontent.com/fluent/fluentd-kubernetes-daemonset/master/docker-image/v1.4/debian-elasticsearch/plugins/parser_multiline_kubernetes.rb -P /fluentd/plugins \
&& echo 'gem: --no-document' >> /etc/gemrc \
&& bundle config silence_root_warning true \
&& wget https://github.com/vmware/fluent-plugin-vmware-log-intelligence/releases/download/v2.0.0/fluent-plugin-vmware-log-intelligence-2.0.0.gem \
&& bundle install --gemfile=/fluentd/Gemfile \
&& fluent-gem install --local fluent-plugin-vmware-log-intelligence-2.0.0.gem \
&& tdnf clean all \
&& gem sources --clear-all \
&& ln -s $(which fluentd) /usr/local/bundle/bin/fluentd \
&& tdnf remove -y $buildDeps \
&& rm -rf /tmp/* /var/tmp/* /usr/lib/ruby/gems/*/cache/*.gem /fluent-plugin-vmware-log-intelligence-2.0.0.gem

EXPOSE 24444 5140


# copy k8s config
ADD https://raw.githubusercontent.com/fluent/fluentd-kubernetes-daemonset/master/docker-image/v1.4/debian-elasticsearch/plugins/parser_kubernetes.rb /fluentd/plugins
ADD https://raw.githubusercontent.com/fluent/fluentd-kubernetes-daemonset/master/docker-image/v1.4/debian-elasticsearch/plugins/parser_multiline_kubernetes.rb /fluentd/plugins

COPY plugins /fluentd/plugins
RUN mkdir -p /usr/local/bundle/bin/ && ln -s $(which fluentd) /usr/local/bundle/bin/fluentd
RUN gem uninstall rake -v 12.3.2

0 comments on commit c99a9d6

Please sign in to comment.