这里是我的问题:我想在构建一个名为django
的服务时包含/排除特定的文件。但是当玩Dockerfile.dockerignore
文件时,我没有成功,我不知道为了做到这一点,我应该采用哪种语法。
回购结构如下:
.
└── root_dir
├── django
│ ├── Dockerfile
│ ├── Dockerfile.ignore
│ └── stuff
├── documentation
│ └── stuff
├── useless dir
└── another useless dir
字符串
我的docker-compose.yml
用于构建的代码如下:
version: '3.5'
services:
[...]
django:
build:
context: $ROOT_DIR
dockerfile: $ROOT_DIR/django/Dockerfile
[...]
型
正如您所看到的,上下文是root_dir
而不是django
(因为我需要在构建时从documentation
目录中复制一些东西)。
我在建立形象时需要什么:
- Django 雷普
- 文件代表
我在建立形象时想忽略的内容: - 除
django
和documentation
目录外的所有目录 - Dockerfile和Dockerfile.dockerignore
- 还有一些其他的东西(虚拟环境,
*.pyc
等,但我们将坚持使用Dockerfile
和Dockerfile.dockerignore
!)
我的Dockerfile.dockerignore
看起来像什么,以便这样做:
# Ignore everything
*
# Allows django and documentation rep (context is root of project)
!/django
!/documentation
# Ignoring some files
**/Dockerfile
**/Dockerfile.dockerignore
型
但我的问题是,我想忽略的文件仍然存在于我的形象!这对我来说是不好的。我想我尝试了任何可能的语法(**/
,*/*/...
.),但我找不到一个适合我的需要。
非常感谢,如果你能帮助我!
编辑:对于那些想知道Dockerfile.dockerignore
文件的人,你可以在这里看看:https://docs.docker.com/engine/reference/commandline/build/#use-a-dockerignore-file
3条答案
按热度按时间icnyk63a1#
Docker ignore文件名应该是**.dockerignore**你可以在这里查看文档https://docs.docker.com/engine/reference/builder/#dockerignore-file
pkmbmrz72#
在'docker build'之前运行这个命令为我修复了它:
字符串
FYI:我不需要先安装'buildkit'。
s3fp2yjn3#
**Enable BuildKit.**我也有同样的困惑;我的
*.dockerignore
文件似乎都不工作:字符串
然而,正如@Matthias和@user2270347所指出的,我们所需要做的就是启用“新的”Buildx。对于我和我的Arch来说,我只需要用
sudo pacman -S docker-buildx
安装它。