在我们的项目中,我们有一个项目目录,其中包含docker configs和每个服务的其他常见内容和文件夹。由于我们在dockerfiles中使用了常见的东西,因此我们需要将上下文设置为根文件夹,但是docker然后将所有上下文发送到docker deamon,大约3 GB,这需要一些时间,尤其是对于每种服务。
是否有使其直接使用本地文件系统的选项? 还是有其他替代方案可用于构建不发送上下文的OCI容器?
答案 0 :(得分:2)
我过去使用的一种方法是为Docker创建一个临时的构建树。可能看起来像
mkdir build/docker
cp Dockerfile build/docker
cp -a project-a/target/app_a build/docker
cp -a common/docker/etc build/docker
docker build -t me/project-a build/docker
rm -rf build/docker
现在上下文目录正好是您所需要的目录,不多也不少,而且您的Dockerfile可能非常简单。
(实际上,当我这样做时,我使用Makefile构建了主机上下文目录,这种方法可能需要某种程度的构建自动化。)
答案 1 :(得分:1)
您可以在项目目录中创建.dockerignore
文件,而忽略一些不需要的文件。它会告诉docker将上下文发送到docker deamon,而没有.dockerignore
文件中列出的文件。
您还可以从官方文档here
中获得更多帮助。例如,如果您不想将.git
目录发送到docker deamon,则可以在工作目录中创建一个.dockerignore
文件,然后运行以下命令:echo '.git' >> .dockerignore