首页 > 解决方案 > docker-compose dockerignore 的命名空间

问题描述

docker-compose版本信息:

docker-compose version 1.24.1, build 4667896b
docker-py version: 3.7.3
CPython version: 3.6.8
OpenSSL version: OpenSSL 1.1.0j  20 Nov 2018

我有几个按以下约定命名的 Dockerfile 和 docker-compose 文件

Dockerfile.a
Dockerfile.b
Dockerfile.c
docker-compose.x.dev.yml
docker-compose.x.prod.yml
docker-compose.y.dev.yml
docker-compose.y.prod.yml

docker-compose.x.prod.yml可能看起来像哪里

version: '3'

services:
  a:
    image: service_a
    container_name: cont_a
    build:
      context: .
      dockerfile: ./Dockerfile.a
  b:
    image: service_b
    container_name: cont_b
    build:
      context: .
      dockerfile: ./Dockerfile.b

我可能会打以下电话

docker-compose -f docker-compose.x.prod.yml -f docker-compose.x.dev.yml build

我应该如何命名我的 dockerignore 文件?我需要以下哪一项?

Dockerfile.a.dockerignore
docker-compose.x.dockerignore
docker-compose.x.prod.dockerignore
docker-compose.x.dev.dockerignore

标签: dockerdocker-composedockerfile

解决方案


.dockerignore文件必须在context:目录中,并且必须准确命名.dockerignore。docker -composedocker build都没有能力为其提供替代名称。在您的示例中,两个服务将始终使用相同的文件。build:.dockerignore

这意味着不能在文件中列出任何一项服务所需的任何.dockerignore文件。在实践中,这可能意味着您也不想盲目地COPY .进入图像,因为这将包含相当多的单个图像不需要的内容;您将需要对您所COPY从事的工作更具选择性。


推荐阅读