Skip to main content
  1. Posts/

使用 chatGPT 帮忙优化 Dockerfile

·368 字·2 分钟· 0 · 0 ·
开发笔记 docker chatgpt
Table of Contents

最近要制作一个基于 ubuntu 的生产镜像。

要求如下:

  1. Python 环境,加 pip, conda环境
  2. 机器学习包,sklearn,numpy,cuda
  3. 代码挂载

写了一个基础镜像,如下,写的很简陋:

原版>

原版 #

FROM ubuntu:18.04                                                                                                                               

RUN apt-get update && apt-get install -y --no-install-recommends \                                                                              

​      bzip2 \                                                                                                                                   

​      g++ \                                                                                                                                     

​      git \                                                                                                                                     

​      graphviz \                                                                                                                                

​      libgl1-mesa-glx \                                                                                                                         

​      libhdf5-dev \                                                                                                                             

​      openmpi-bin \                                                                                                                             

​      wget && \                                                                                                                                 

​    rm -rf /var/lib/apt/lists/*                                                                                                                 

​                                                                                                                                                

RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list                                                                   

RUN apt-get update                                                                                                                              

​                                                                                                                                                

ADD ./Anaconda3-2022.10-Linux-x86_64.sh ./anaconda.sh                                                                                           

​                                                                                                                                                

ENV LANG=C.UTF-8 LC_ALL=C.UTF-8                                                                                                                 

ENV PATH /opt/conda/bin:$PATH                                                                                                                   

RUN  /bin/bash ./anaconda.sh -b -p /opt/conda  && rm ./anaconda.sh \                                                                            

​     && ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh  \                                                                      

​     && echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc \                                                                               

​     && echo "conda activate base" >> ~/.bashrc \                                                                                               

​     && find /opt/conda/ -follow -type f -name '*.a' -delete \                                                                                  

​     && find /opt/conda/ -follow -type f -name '*.js.map' -delete \                                                                             

​     &&  /opt/conda/bin/conda clean -afy                                                                                                        

​                                                                                                                                                

RUN pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ \                                                                   

&& conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ \                                                       

&& conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ \                                                       

&& conda config --set show_channel_urls yes \                                                                                                   

&& conda config --set restore_free_channel true                                                                                                 

​                                                                                                                                                

CMD [ "/bin/bash" ] 
ChatGPT 优化版>

ChatGPT 优化版 #

# 第一阶段:基础镜像
FROM ubuntu:18.04 AS base
RUN apt-get update && apt-get install -y --no-install-recommends \
      bzip2 \
      g++ \
      git \
      graphviz \
      libgl1-mesa-glx \
      libhdf5-dev \
      openmpi-bin \
      wget && \
    rm -rf /var/lib/apt/lists/*
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt-get update

# 第二阶段:安装 Anaconda
FROM base AS anaconda
ADD https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh /tmp/anaconda.sh
RUN /bin/bash /tmp/anaconda.sh -b -p /opt/conda && \
    rm /tmp/anaconda.sh && \
    /opt/conda/bin/conda clean -afy && \
    find /opt/conda/ -follow -type f -name '*.a' -delete && \
    find /opt/conda/ -follow -type f -name '*.js.map' -delete
ENV PATH /opt/conda/bin:$PATH
RUN echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc && \
    echo "conda activate base" >> ~/.bashrc

# 第三阶段:设置 Python 环境
FROM anaconda AS python
RUN pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ && \
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ && \
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ && \
    conda config --set show_channel_urls yes && \
    conda config --set restore_free_channel true

# 最终阶段:生成最终镜像
FROM python AS final
CMD ["/bin/bash"]

明显,ChatGPT 优化的好看很多。同时他也给了我很多建议

以下是我对您的Dockerfile的一些优化建议:

  1. 使用更轻量的基础镜像,例如 Alpine Linux 或者 Debian Stretch。
  2. apt-get updateapt-get install 命令合并到一行中以减少镜像层数。
  3. 使用 --quiet 选项以减少输出并加快构建速度。
  4. 在最后一行使用 ENTRYPOINT 而不是 CMD,因为 CMD 可以被覆盖而 ENTRYPOINT 不会。
  5. 可以添加一些 LABEL 来提供关于镜像的元数据,例如版本、维护者和描述等。

其中,还有很多有用的建议。以后适应吧,适应有着 ChatGPT 的开发生活