我有作为docker容器运行的Node.js应用程序。这是
该应用程序的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 ]

我可以修改此Dockerfile中的内容以减小Docker镜像大小吗

最佳答案

就像这里大多数建议的那样,使用the official node alpine image作为基础图像是减少图像整体尺寸的简单解决方案,因为与基础ubuntu图像相比,甚至基础 Alpine 图像也要小很多。

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" ]

它几乎相同,应该可以正常工作。 ubuntu镜像中的大多数命令都可以在 Alpine 镜像中以相同方式应用。

当我添加模拟数据以创建可能与您类似的项目时,将生成大小为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

关于docker - 如何减少Docker镜像的大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43634109/

10-16 16:20