Skip to content

Commit

Permalink
optimized docker image size (#549)
Browse files Browse the repository at this point in the history
### Feature or Bugfix
Refactoring

### Detail
Optimized docker image size of `backend/docker/ecs/` from `3.6GB` to
`1.9GB`

By submitting this pull request, I confirm that my contribution is made
under the terms of the Apache 2.0 license.
  • Loading branch information
srinivasreddych authored Jul 11, 2023
1 parent 558e2bc commit 49ffa72
Showing 1 changed file with 39 additions and 36 deletions.
75 changes: 39 additions & 36 deletions backend/docker/prod/ecs/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,56 +5,59 @@ ARG NVM_VERSION=v0.37.2
ARG DEEQU_VERSION=2.0.0-spark-3.1
ARG PYTHON_VERSION=python3.8

RUN yum upgrade -y;\
find /var/tmp -name "*.rpm" -print -delete ;\
find /tmp -name "*.rpm" -print -delete ;\
yum autoremove -y; \
yum clean packages; yum clean headers; yum clean metadata; yum clean all; rm -rfv /var/cache/yum

RUN yum -y install shadow-utils wget
RUN yum -y install openssl-devel bzip2-devel libffi-devel postgresql-devel gcc unzip tar gzip
RUN amazon-linux-extras install $PYTHON_VERSION
RUN yum -y install python38-devel
RUN yum -y install git

RUN /bin/bash -c "ln -s /usr/bin/${PYTHON_VERSION} /usr/bin/python3"

RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
RUN unzip awscliv2.zip
RUN ./aws/install

# Installing libraries
RUN yum upgrade -y \
&& find /var/tmp -name "*.rpm" -print -delete \
&& find /tmp -name "*.rpm" -print -delete \
&& yum autoremove -y \
&& yum clean all \
&& rm -rfv /var/cache/yum \
&& yum install -y \
shadow-utils wget openssl-devel bzip2-devel libffi-devel \
postgresql-devel gcc unzip tar gzip \
&& amazon-linux-extras install $PYTHON_VERSION \
&& yum install -y python38-devel git \
&& /bin/bash -c "ln -s /usr/bin/${PYTHON_VERSION} /usr/bin/python3" \
&& curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o /tmp/awscliv2.zip \
&& unzip -q /tmp/awscliv2.zip -d /opt \
&& /opt/aws/install --update -i /usr/local/aws-cli -b /usr/local/bin \
&& rm /tmp/awscliv2.zip \
&& rm -rf /opt/aws \
&& aws --version

# Configuring path
RUN touch ~/.bashrc

RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/$NVM_VERSION/install.sh | bash

RUN /bin/bash -c ". ~/.nvm/nvm.sh && \
nvm install $NODE_VERSION && nvm use $NODE_VERSION && \
npm install -g aws-cdk && \
nvm alias default node && nvm cache clear"

RUN echo export PATH="\
/root/.nvm/versions/node/${NODE_VERSION}/bin:\
$(${PYTHON_VERSION} -m site --user-base)/bin:\
$(python3 -m site --user-base)/bin:\
$PATH" >> ~/.bashrc && \
echo "nvm use ${NODE_VERSION} 1> /dev/null" >> ~/.bashrc
RUN /bin/bash -c ". ~/.nvm/nvm.sh && cdk --version"
# Configuring Node and CDK
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/$NVM_VERSION/install.sh | bash \
&& /bin/bash -c ". ~/.nvm/nvm.sh && \
nvm install $NODE_VERSION && nvm use $NODE_VERSION && \
npm install -g aws-cdk && \
nvm alias default node && nvm cache clear" \
&& echo export PATH="\
/root/.nvm/versions/node/${NODE_VERSION}/bin:\
$(${PYTHON_VERSION} -m site --user-base)/bin:\
$(python3 -m site --user-base)/bin:\
$PATH" >> ~/.bashrc && \
echo "nvm use ${NODE_VERSION} 1> /dev/null" >> ~/.bashrc \
&& /bin/bash -c ". ~/.nvm/nvm.sh && cdk --version"

RUN $PYTHON_VERSION -m pip install -U pip

# App specific
ADD backend/requirements.txt /dh.requirements.txt
ADD backend/dataall/cdkproxy/requirements.txt /cdk.requirements.txt

RUN /bin/bash -c "pip3.8 install -r /dh.requirements.txt"
RUN /bin/bash -c "pip3.8 install -r /cdk.requirements.txt"
RUN /bin/bash -c "pip3.8 install -r /dh.requirements.txt" \
&& /bin/bash -c "pip3.8 install -r /cdk.requirements.txt"

ADD backend/dataall /dataall
VOLUME ["/dataall"]
ADD backend/blueprints /blueprints
ADD backend/cdkproxymain.py /cdkproxymain.py

RUN mkdir -p dataall/cdkproxy/assets/glueprofilingjob/jars
RUN mkdir -p blueprints/ml_data_pipeline/engine/glue/jars
RUN mkdir -p dataall/cdkproxy/assets/glueprofilingjob/jars \
&& mkdir -p blueprints/ml_data_pipeline/engine/glue/jars
ADD https://repo1.maven.org/maven2/com/amazon/deequ/deequ/$DEEQU_VERSION/deequ-$DEEQU_VERSION.jar /dataall/cdkproxy/assets/glueprofilingjob/jars/
RUN cp -f dataall/cdkproxy/assets/glueprofilingjob/jars/deequ-$DEEQU_VERSION.jar blueprints/ml_data_pipeline/engine/glue/jars/deequ-$DEEQU_VERSION.jar

Expand Down

0 comments on commit 49ffa72

Please sign in to comment.