将基于nginx的内置角度项目添加到Docker非常缓慢

问题描述 投票:0回答:1

我有一个Angular项目。我用ng build --prod构建它。然后我基于nginx容器构建了一个docker容器。我添加到此Docker容器的唯一内容是dist文件夹,其中包含内容和nginx.conf。这是我的Dockerfile:

FROM nginx

COPY dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/nginx.conf

在我的dist文件夹中没有太多。通常缩小的js目标文件以及不超过1MB的其他资源(如图片)。现在,如果我运行docker build .,则有时最多可能需要10分钟才能显示任何日志,然后我得到“将构建发送到守护进程”等信息,最后成功。我注意到的是,如果我在Angular项目中进行某些更改并重建项目,则需要花费这10分钟。

所以流程是:

$ docker build .
(something happening here, it just does something without any logs for 10 minutes)
Sending build context to Docker daemon  627.5MB
Step 1/3 : FROM nginx
Step 2/3 : COPY dist /usr/share/nginx/html
 ---> e831f2851f75
Step 3/3 : COPY nginx.conf /etc/nginx/nginx.conf
 ---> f6264feec52b

所以我的问题是,这么长的时间会使Docker停顿,如何使它更快?

angular docker nginx
1个回答
0
投票

由于您在谈论Angular应用,因此可能是检查了构建上下文。

确保通过将.dockerignore文件添加到构建中来忽略构建不需要的文件来提高性能。

Docker构建上下文(在您的情况下为.,它是当前目录)已上传到Docker Daemon。

这意味着将发送PATH中的所有文件,而不仅仅是Dockerfile中列为ADD的文件。

请参见Docker Documentation

如果排除node_modules文件夹和任何其他不必要的大目录/文件,则可能是构建速度更快。


另外还有一些最佳实践

# add git-ignore syntax here of things you don't want copied into docker image

.git
*Dockerfile*
*docker-compose*
node_modules

通过Docker Captain Bret Fisher - Good dockerignore defaults

© www.soinside.com 2019 - 2024. All rights reserved.