Docker-compose и .dockerignore - PullRequest
       0

Docker-compose и .dockerignore

0 голосов
/ 27 декабря 2018

В подкаталогах есть небольшая конфигурация docker-compose с файлами Dockerfiles и .dockerignore.Я не могу понять, почему мои изображения после сборки содержат все, даже если у меня есть некоторые элементы, которые нужно игнорировать в .dockerignore.Вот что у меня есть

docker-compose.yml docker ├── app │ ├── Dockerfile │ └── .dockerignore └── web ├── Dockerfile ├── nginx.conf └── .dockerignore

Пример .dockerignore:

**/.dockerignore docker-compose.yml log **/log ../../log

Я просто запускаю это следующим образом:

docker-compose up -d --build --no-cache

Ничего из вышеперечисленного не было проигнорировано .. Что я делаю не так?

docker-compose version 1.23.2, build 1110ad01

Добавление Dockerfile для службы приложений (см. Docker-сочинить).Docker-compose объединяет два изображения с помощью приложения ROR и nginx.Для обоих dockerfiles у меня есть dockerignore.Итак, я понимаю, что я могу сказать, что именно я хочу в каждом.Но это не так.Как я могу игнорировать некоторые файлы в пакете?Или я должен поместить свой Dockerfile и dockerignore по-разному, так как сборка работает только внутри контекста ... Я запутался.

FROM ruby:2.4.1
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs imagemagick
# Configuring main directory
RUN mkdir -p /var/www/example.com
WORKDIR /var/www/example.com
# Setting env up
ENV RAILS_ENV='production'
ENV RACK_ENV='production'

# Adding gems
COPY Gemfile Gemfile
COPY Gemfile.lock Gemfile.lock
RUN bundle install --jobs 20 --retry 5 --without development test
# Adding project files
COPY . .

EXPOSE 3000
CMD ["bundle", "exec", "puma", "-C", "config/puma.rb"]

Поэтому я подумал, что COPY . . сначала проверяет .dockerignore .. нет?

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

.dockerignore должен находиться в корневой директории / контекстной папке, как вы указали в docker-compose.yml

0 голосов
/ 27 декабря 2018

У вас есть 2 Dockerfiles, которые имеют свои отдельные контексты.В каждом контексте (папке) у вас есть .dockerignore, и это правильно.Но .dockerignore не не работает вне контекста сборки, это означает, что использование ../../ неправильно.

Я полагаю, вы предполагаете, что эти файлы применяются к папке docker, но вФактически они применяются к docker/app и docker/web соответственно.

Процесс сборки следующий:

Сначала docker cli упаковывает контекст (папка с Dockerfile, если не указано явно) иотправляет его на docker daemon.Ничего за пределами эта папка отправлена.Она написана явно для команды COPY, которая используется для помещения элементов контекста в контейнер:

Путь src должен находиться внутри контекста сборки;Вы не можете скопировать ../something / что-то, потому что первый шаг сборки докера - это отправить каталог контекста (и подкаталоги) демону докера.

Если есть .dockerignore, тоигнорируемые файлы исключаются перед упаковкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...