使用 chatGPT 帮忙优化 Dockerfile
·368 字·2 分钟·
0
·
0
·
开发笔记
docker
chatgpt
Table of Contents
最近要制作一个基于 ubuntu 的生产镜像。
要求如下:
- Python 环境,加 pip, conda环境
- 机器学习包,sklearn,numpy,cuda
- 代码挂载
写了一个基础镜像,如下,写的很简陋:
原版>
原版 #
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的一些优化建议:
- 使用更轻量的基础镜像,例如 Alpine Linux 或者 Debian Stretch。
- 将
apt-get update
和apt-get install
命令合并到一行中以减少镜像层数。- 使用
--quiet
选项以减少输出并加快构建速度。- 在最后一行使用
ENTRYPOINT
而不是CMD
,因为CMD
可以被覆盖而ENTRYPOINT
不会。- 可以添加一些
LABEL
来提供关于镜像的元数据,例如版本、维护者和描述等。
其中,还有很多有用的建议。以后适应吧,适应有着 ChatGPT 的开发生活