如何在 Dockerfile 中添加除隐藏目录(如 .git)之外的所有文件/目录 [英] How to ADD all files/directories except a hidden directory like .git in Dockerfile

查看:74
本文介绍了如何在 Dockerfile 中添加除隐藏目录(如 .git)之外的所有文件/目录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们经常做的一件事是在构建 Docker 镜像时将所有源代码打包到 Dockerfile 中.

添加./应用程序

我们如何避免简单地包含 .git 目录?

我尝试使用 Unix 方式处理此问题,使用 ADD [^.]*/app/

完整示例:

<上一页>docker@boot2docker:/mnt/sda1/tmp/abc$ 查找.../C./.git./Dockerfile./好的./好/a1docker@boot2docker:/mnt/sda1/tmp/abc$ cat Dockerfile来自 Ubuntu添加 [^.]*/app/docker@boot2docker:/mnt/sda1/tmp/abc$ docker build -t abc .将构建上下文发送到 Docker 守护进程 4.096 kB将构建上下文发送到 Docker 守护进程步骤 0:来自 ubuntu---> 04c5d3b7b065第 1 步:添加 [^.]*/app/d ---> 5d67603f108b卸下中间容器 60159dee6ac8成功建造 5d67603f108bdocker@boot2docker:/mnt/sda1/tmp/abc$ docker run -it abcroot@1b1705dd66a2:/# ls -l app共 4 个-rw-r--r-- 1 1000 名员工 30 Jan 22 01:18 Dockerfile-rw-r--r-- 1 根 0 Jan 22 01:03 a1-rw-r--r-- 1 根根 0 Jan 22 00:10 c

其次,它会丢失目录结构,因为 gooda1 被更改为 a1.

Docker 中的相关源代码是 https://github.com/docker/docker/blob/eaecf741f0e00a09782d5bcf16159cc8ea258b67/builder/internals.go#L115

解决方案

您可以在 .dockerignore 文件

One of things we do often is to package all source code in Dockerfile when we build a Docker image.

ADD . /app

How can we avoid including the .git directory in simple way ?

I tried the Unix way of handling this using ADD [^.]* /app/

Complete sample:

docker@boot2docker:/mnt/sda1/tmp/abc$ find .
.
./c
./.git
./Dockerfile
./good
./good/a1
docker@boot2docker:/mnt/sda1/tmp/abc$ cat Dockerfile
FROM ubuntu

ADD [^.]* /app/
docker@boot2docker:/mnt/sda1/tmp/abc$ docker build -t abc .
Sending build context to Docker daemon 4.096 kB
Sending build context to Docker daemon
Step 0 : FROM ubuntu
 ---> 04c5d3b7b065
Step 1 : ADD [^.]* /app/
d ---> 5d67603f108b
Removing intermediate container 60159dee6ac8
Successfully built 5d67603f108b
docker@boot2docker:/mnt/sda1/tmp/abc$ docker run -it abc
root@1b1705dd66a2:/# ls -l app
total 4
-rw-r--r-- 1 1000 staff 30 Jan 22 01:18 Dockerfile
-rw-r--r-- 1 root root   0 Jan 22 01:03 a1
-rw-r--r-- 1 root root   0 Jan 22 00:10 c

And secondly, it will lose the directory structure, since gooda1 gets changed to a1.

Related source code in Docker is https://github.com/docker/docker/blob/eaecf741f0e00a09782d5bcf16159cc8ea258b67/builder/internals.go#L115

解决方案

You may exclude unwanted files with the help of the .dockerignore file

这篇关于如何在 Dockerfile 中添加除隐藏目录(如 .git)之外的所有文件/目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆