Browse Source

refactor(docker): about 60% docker image size reduce (1.2GB -->> 480MB, compressed status)

1, merge docker build step to reduce docker image layer
2, apt and pip install without cache storage
3, directory desktop/core/ext-py/ add to docker layer but delete it at Dockerfile, so add it to .dockerignore
4, node.js 10.x is no longer actively supported! upgrade to 14
5, FIX comment issue at Dockerfile L74: "threadloop  # Needed for Jaeger \", this make pip explain the follow line as comment
6, FIX Clickhouse "Can't load plugin: sqlalchemy.dialects:clickhouse" by pip install sqlalchemy-clickhouse
ymping 4 years ago
parent
commit
cedf31668d
2 changed files with 36 additions and 36 deletions
  1. 2 0
      .dockerignore
  2. 34 36
      tools/docker/hue/Dockerfile

+ 2 - 0
.dockerignore

@@ -3,3 +3,5 @@ logs
 node_modules
 node_modules
 .git
 .git
 .vscode
 .vscode
+
+desktop/core/ext-py/

+ 34 - 36
tools/docker/hue/Dockerfile

@@ -18,44 +18,39 @@ RUN apt-get update -y && apt-get install -y \
   rsync \
   rsync \
   curl \
   curl \
   sudo \
   sudo \
-  git
-
-RUN pip3 install --upgrade setuptools
-RUN pip3 install virtualenv
-
-# Need recent version for Ubuntu
-RUN curl -sL https://deb.nodesource.com/setup_14.x | sudo bash - \
-  && apt-get install -y nodejs
-
-RUN addgroup hue && useradd -r -u 1001 -g hue hue
+  git && \
+  rm -rf /var/lib/apt/lists/*
 
 
 ADD . /hue
 ADD . /hue
-WORKDIR /hue
-
-RUN chown -R hue /hue \
-  && mkdir /hue/build \
-  && chown -R hue /hue/build \
-  && mkdir /usr/share/hue \
-  && chown -R hue /usr/share/hue
-
-# Not doing a `make prod`, so manually getting production ini
-RUN rm desktop/conf/*
-COPY desktop/conf.dist desktop/conf
 
 
-RUN rm -r desktop/core/ext-py
+RUN pip3 install --upgrade --no-cache-dir setuptools virtualenv pip && \
+  curl -sL https://deb.nodesource.com/setup_14.x | sudo bash - && \
+  apt-get install -y nodejs && \
+  addgroup hue && \
+  useradd -r -u 1001 -g hue hue && \
+  chown -R hue /hue && \
+  mkdir /hue/build && \
+  chown -R hue /hue/build && \
+  mkdir /usr/share/hue && \
+  chown -R hue /usr/share/hue && \
+  rm -r /hue/desktop/conf/* && \
+  cp -r /hue/desktop/conf.dist/* /hue/desktop/conf/ && \
+  cd /hue && \
+  PREFIX=/usr/share PYTHON_VER=python3.6 make install && \
+  chown -R hue /usr/share/hue && \
+  npm cache clean --force && \
+  pip3 cache purge && \
+  rm -rf /var/lib/apt/lists/* && \
+  cp -r /hue/tools/docker/hue/conf3/* /usr/share/hue/desktop/conf/ && \
+  cp /hue/tools/docker/hue/startup.sh /usr/share/hue/startup.sh && \
+  rm -rf /hue && \
+  rm -rf /usr/share/hue/node_modules
 
 
-RUN PREFIX=/usr/share PYTHON_VER=python3.6 make install
-RUN chown -R hue /usr/share/hue
-
-# Only keep install dir
-# Note: get more minimal image by pulling install dir in a stage 2 image
 WORKDIR /usr/share/hue
 WORKDIR /usr/share/hue
-RUN rm -rf /hue \
-  && rm -rf node_modules
 
 
 # Install DB connectors
 # Install DB connectors
 # To move to requirements_connectors.txt
 # To move to requirements_connectors.txt
-RUN ./build/env/bin/pip install \
+RUN ./build/env/bin/pip install --no-cache-dir \
   psycopg2-binary \
   psycopg2-binary \
   # Avoid Django 3 pulling
   # Avoid Django 3 pulling
   django_redis==4.11.0 \
   django_redis==4.11.0 \
@@ -71,14 +66,17 @@ RUN ./build/env/bin/pip install \
   pyasn1==0.4.1 \
   pyasn1==0.4.1 \
   # View some parquet files
   # View some parquet files
   python-snappy==0.5.4 \
   python-snappy==0.5.4 \
-  threadloop  # Needed for Jaeger \
-  thrift-sasl==0.2.1
-
-
-COPY tools/docker/hue/conf3 desktop/conf
-COPY tools/docker/hue/startup.sh .
+  # Needed for Jaeger
+  threadloop \
+  # Fix Can't load plugin: sqlalchemy.dialects:clickhouse
+  sqlalchemy-clickhouse \
+  # sqlalchemy-clickhouse depend on infi.clickhouse_orm
+  # install after sqlalchemy-clickhouse and version == 1.0.4
+  # otherwise Code: 516, Authentication failed will display
+  infi.clickhouse_orm==1.0.4
 
 
 USER hue
 USER hue
 
 
 EXPOSE 8888
 EXPOSE 8888
+
 CMD ["./startup.sh"]
 CMD ["./startup.sh"]