7 docker dockerfile docker-compose
我有Node.js应用程序,我作为docker容器运行.这是该应用程序的Dockerfile.
FROM ubuntu
ARG ENVIRONMENT
ARG PORT
RUN apt-get update -qq
RUN apt-get install -y build-essential nodejs npm nodejs-legacy vim
RUN mkdir /consumer_portal
ADD . /consumer_portal
WORKDIR /consumer_portal
RUN npm install -g express
RUN npm install -g path
RUN npm cache clean
RUN npm install
EXPOSE $PORT
ENTRYPOINT [ "node", "server.js" ]
CMD [ $PORT, $ENVIRONMENT ]
Run Code Online (Sandbox Code Playgroud)
我可以修改此Dockerfile中的某些内容以减少docker镜像大小
尝试将所有RUN指令打包在一起,这会减少中间图像的数量。(但它不会减少最终图像的尺寸)。
添加rm -rf /var/lib/apt/lists/*后将apt-get update通过删除所有无用的 apt-get 内容来减小图像大小。
您还可以vim从最后一个 RUN 指令中的映像中删除。
FROM ubuntu
ARG ENVIRONMENT
ARG PORT
RUN apt-get update \
&& apt-get install -y build-essential nodejs npm nodejs-legacy vim \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir /consumer_portal
ADD . /consumer_portal
WORKDIR /consumer_portal
RUN npm install -g express \
&& npm install -g path \
&& npm cache clean \
&& npm install
EXPOSE $PORT
ENTRYPOINT [ "node", "server.js" ]
CMD [ $PORT, $ENVIRONMENT ]
Run Code Online (Sandbox Code Playgroud)
正如大多数人所建议的那样,使用官方节点高山图像作为基本图像是减少图像整体尺寸的简单解决方案,因为即使基本高山图像与基础ubuntu图像相比也要小得多.
Dockerfile看起来像这样:
FROM node:alpine
ARG ENVIRONMENT
ARG PORT
RUN mkdir /consumer_portal \
&& npm install -g express path
COPY . /consumer_portal
WORKDIR /consumer_portal
RUN npm cache clean \
&& npm install
EXPOSE $PORT
CMD [ "node", "server.js" ]
Run Code Online (Sandbox Code Playgroud)
它几乎相同,应该按预期工作.来自ubuntu图像的大多数命令可以在高山图像中以相同的方式应用.
当我添加模拟数据以创建一个类似的项目时,会产生一个大小为491 MB的ubuntu图像,而alpine版本只有62.5 MB大:
REPOSITORY TAG IMAGE ID CREATED SIZE
alpinefoo latest 8ca6f338475e 5 minutes ago 62.5MB
ubuntufoo latest 38620a1bd5a6 6 minutes ago 491MB
Run Code Online (Sandbox Code Playgroud)
如果您基于 Ubuntu,那么明智的做法是这样做
RUN apt-get update && apt-get install -y \
build-essential \
cwhatever-you-want \
vim \
&& rm -rf /var/lib/apt/lists/*
Run Code Online (Sandbox Code Playgroud)
最后一行会清除很多:)您应该始终在同一行中进行 apt-get update ,因为否则如果您添加另一个要安装的库,它将被缓存并且不会在下一个版本中触发。
| 归档时间: |
|
| 查看次数: |
9640 次 |
| 最近记录: |