代码之家  ›  专栏  ›  技术社区  ›  Dhairya

为什么Docker容器图像在Ubuntu 16.04上部署Python 3.6、Virtualenv、Flask、Gunicorn时变得如此巨大?

  •  1
  • Dhairya  · 技术社区  · 8 年前

    在virtualenv中部署flask应用程序时 python3 -m venv FLSK-ENV

        FROM appcontainers/ubuntu:xenial
    
        MAINTAINER user <user>
    
        RUN apt-get install -y software-properties-common \
                && add-apt-repository ppa:jonathonf/python-3.6 -y \
                && apt-get update -y \
                && apt-get install -y python3.6-minimal python3.6-venv \
                && apt-get install -y git \
                && apt-get install python-pip -y \
                && pip install --upgrade pip \
                && pip install gunicorn \
                && mkdir -p /home/EZMOVE 
    
        WORKDIR /home/workdir
    
        RUN git clone -b develop --single-branch http://repo
    
        RUN ["chmod", "+x", "./prepareenv.sh"]
    
        RUN /bin/bash -c "source prepareenv.sh"
    
        EXPOSE 5000
    

    因此,上面的Dockerfile将从“中提取最小的ubuntu-16.04” appcontainers/ubuntu:xenial “并将仅更新和安装所需的软件包,如:

     1. python3.6
     2. git
     3. python-pip
     4. gunicorn
    

    然后它将执行' 准备V。上海 '要创建python3.6虚拟环境,请激活venv,然后安装需求。txt使用pip,然后它将暴露端口,gunicorn将服务于Flask应用程序。。等

    在安装软件包时,它正在安装其他软件包,如下所示:

        The following additional packages will be installed:
      binutils build-essential bzip2 cpp cpp-5 dpkg-dev fakeroot g++ g++-5 gcc
      gcc-5 gcc-5-base libalgorithm-diff-perl libalgorithm-diff-xs-perl
      libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6 libc6-dev
      libcc1-0 libcilkrts5 libdpkg-perl libexpat1-dev libfakeroot
      libfile-fcntllock-perl libgcc-5-dev libgomp1 libisl15 libitm1 liblsan0
      libmpc3 libmpfr4 libmpx0 libpython-all-dev libpython-dev libpython-stdlib
      libpython2.7 libpython2.7-dev libpython2.7-minimal libpython2.7-stdlib
      libquadmath0 libstdc++-5-dev libstdc++6 libtsan0 libubsan0 linux-libc-dev
      make manpages manpages-dev python python-all python-all-dev python-dev
      python-minimal python-pkg-resources python-setuptools python-wheel python2.7
      python2.7-dev python2.7-minimal
    Suggested packages:
      binutils-doc bzip2-doc cpp-doc gcc-5-locales debian-keyring g++-multilib
      g++-5-multilib gcc-5-doc libstdc++6-5-dbg gcc-multilib autoconf automake
      libtool flex bison gdb gcc-doc gcc-5-multilib libgcc1-dbg libgomp1-dbg
      libitm1-dbg libatomic1-dbg libasan2-dbg liblsan0-dbg libtsan0-dbg
      libubsan0-dbg libcilkrts5-dbg libmpx0-dbg libquadmath0-dbg glibc-doc locales
      libstdc++-5-doc make-doc man-browser python-doc python-tk
      python-setuptools-doc python2.7-doc binfmt-support
    The following NEW packages will be installed:
      binutils build-essential bzip2 cpp cpp-5 dpkg-dev fakeroot g++ g++-5 gcc
      gcc-5 libalgorithm-diff-perl libalgorithm-diff-xs-perl
      libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6-dev libcc1-0
      libcilkrts5 libdpkg-perl libexpat1-dev libfakeroot libfile-fcntllock-perl
      libgcc-5-dev libgomp1 libisl15 libitm1 liblsan0 libmpc3 libmpfr4 libmpx0
      libpython-all-dev libpython-dev libpython-stdlib libpython2.7
      libpython2.7-dev libpython2.7-minimal libpython2.7-stdlib libquadmath0
      libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make manpages manpages-dev
      python python-all python-all-dev python-dev python-minimal python-pip
      python-pkg-resources python-setuptools python-wheel python2.7 python2.7-dev
      python2.7-minimal
    The following packages will be upgraded:
      gcc-5-base libc6 libstdc++6
    3 upgraded, 59 newly installed, 0 to remove and 24 not upgraded.
    Need to get 76.6 MB of archives.
    After this operation, 210 MB of additional disk space will be used.
    

    那么如何减小Docker图像的大小呢?

    1 回复  |  直到 7 年前
        1
  •  4
  •   dino    8 年前

    试试下面的Dockerfile,它可以将图像大小降低到255 MB。“--no install recommendants”确保只安装了所需的软件包,并且“rm-rf/var/lib/apt/lists/*”会清理包括任何索引文件在内的文件。

    FROM appcontainers/ubuntu:xenial
    
    RUN apt-get update \
                && apt-get install -y --no-install-recommends software-properties-common \
                && add-apt-repository -y ppa:jonathonf/python-3.6 \
                && apt-get update \
                && apt-get install -y --no-install-recommends python3.6-minimal python3.6-venv \
                && apt-get install -y --no-install-recommends git \
                && apt-get install -y --no-install-recommends python-pip \
                && pip install --upgrade pip \
                && pip install gunicorn \
                && rm -rf /var/lib/apt/lists/* \
                && mkdir -p /home/EZMOVE
    
    WORKDIR /home/workdir
    
    EXPOSE 5000