docker -создание пространства имен для dockerignore - PullRequest
0 голосов
/ 14 января 2020

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 -компоновок, названных в следующих соглашениях

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

1 Ответ

0 голосов
/ 14 января 2020

Файл .dockerignore должен находиться в каталоге context: и должен иметь точное имя .dockerignore. Ни docker build, ни docker -композит build: блок не могут предоставить ему альтернативное имя. В вашем примере обе службы всегда будут использовать один и тот же файл .dockerignore.

Это означает, что любой файл, который нужен любой из служб, не может быть указан в файле .dockerignore. На практике это, вероятно, означает, что вы также не хотите вслепую вставлять COPY . в изображение, поскольку оно будет содержать довольно много контента, который не понадобится отдельному изображению; вам нужно быть более разборчивым в том, что вы COPY в.

...