使用 .dockerignore 忽略文件和目录

Jas*_*pel 5 docker docker-compose

我有一个简单的.dockerignore文件,其中包含以下内容:

.git/
.idea/
venv/
Run Code Online (Sandbox Code Playgroud)

我的docker-compose.yml文件安装了该卷:

version: "3"
services:
  frontend:
    build: .
    command: ["gunicorn", "--bind", "0.0.0.0:8000",  "project.app:create_app()"]
    env_file:
      - .env
    volumes:
      - .:/frontend
    ports:
      - "8000:8000"
Run Code Online (Sandbox Code Playgroud)

也许我不理解该.dockerignore文件的完整语法或意图,但运行后docker-compose up --build.git/,.idea/venv/最终出现在我的容器中。

我已经阅读并看到了这一点,但无法挂载并阻止文件和目录进入容器似乎并不可行。

如何防止这些目录在容器中变得可用?

BMi*_*tch 11

.dockerignore文件将修改发送到 docker 守护进程以构建映像的上下文。因此,创建的映像中不会包含这些文件,除非您重新创建它们。

卷挂载是完全独立的,主机卷挂载(也称为绑定挂载)会将主机目录的内容按原样直接映射到容器中。这是 Linux 操作系统级别的活动,不遵循.dockerignore.

您需要从挂载到容器中的目录中排除这些文件,或者不将卷挂载到容器中并依赖映像来利用.dockerignore.