忽略Dockerfile中的特定文件,dockerignore不起作用

20jt8wwn  于 11个月前  发布在  Docker
关注(0)|答案(3)|浏览(142)

这里是我的问题:我想在构建一个名为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 雷普
  • 文件代表
    我在建立形象时想忽略的内容
  • djangodocumentation目录外的所有目录
  • Dockerfile和Dockerfile.dockerignore
  • 还有一些其他的东西(虚拟环境,*.pyc等,但我们将坚持使用DockerfileDockerfile.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

icnyk63a

icnyk63a1#

Docker ignore文件名应该是**.dockerignore**你可以在这里查看文档https://docs.docker.com/engine/reference/builder/#dockerignore-file

pkmbmrz7

pkmbmrz72#

在'docker build'之前运行这个命令为我修复了它:

export DOCKER_BUILDKIT=1

字符串
FYI:我不需要先安装'buildkit'。

s3fp2yjn

s3fp2yjn3#

**Enable BuildKit.**我也有同样的困惑;我的*.dockerignore文件似乎都不工作:

$ tree 
...
├── development
│   ├── Dev.Dockerfile
│   ├── Dev.Dockerfile.dockerignore
│   ├── docker-compose.dev.yml
│   ├── docker-compose.prod.yml
│   ├── notas-de-desarrollo.md
│   ├── Prod.Dockerfile
│   └── Prod.Dockerfile.dockerignore
└── README.md
...

字符串
然而,正如@Matthias和@user2270347所指出的,我们所需要做的就是启用“新的”Buildx。对于我和我的Arch来说,我只需要用sudo pacman -S docker-buildx安装它。

相关问题