Я докеризую приложение на основе PHP. У меня есть контейнер nginx, содержащий файлы .js
, .html
и .css
вместе со всеми активами. Для кода PHP я использую выделенный PHP образ , который проксируется сервером nginx. Я хотел бы иметь только .php
файлы в этом PHP изображении без каких-либо ресурсов или publi c файлов.
Для того, чтобы полученное изображение было небольшим насколько это возможно, но все же легко поддерживать файлы, скопированные на моем изображении, я хочу использовать шаблон белого списка .dockerignore . Почему-то я не могу игнорировать все файлы и делать исключения для файлов в любом каталоге для определенного типа файла c.
В моем особом случае я хочу игнорировать любой файл по умолчанию. Затем я хотел бы разрешить php файлы. Они вложены в подкаталоги. Похоже, что .dockerigone
не перехватывает эти файлы в игнорируемых каталогах , если они не найдены как-то еще.
Мой .dockerignore
находится в app/
.
Случай 1
Рассмотрим следующую структуру каталогов:
app
├── index.php
├── controllers
│ ├── controller-1.php
│ ├── controller-2.php
│ └── controller-3.php
└── models
├── index.php
├── checkout
│ ├── model-1.php
│ ├── model-2.php
│ └── model-3.php
├── profile
│ ├── model-1.php
│ ├── model-2.php
│ └── model-3.php
└── registration
├── model-1.php
├── model-2.php
└── model-3.php
И следующий файл .dockerignore
:
# Ignore all files by default.
**
!**/*.php
Контейнер будет содержать следующие файлы:
app
└── index.php
Case 2
Использование более информативного .dockerignore
покажет подкаталоги:
# Ignore all files by default.
**
!controllers/*.php
!models/*.php
Но все равно не приведет к желаемому результат:
app
├── index.php
├── controllers
│ ├── controller-1.php
│ ├── controller-2.php
│ └── controller-3.php
└── models
└── index.php
Случай 3
Но если каталог Docker известен каталогам, он работает в этих, но только в этих каталогах:
# Ignore all files by default.
**
!**/*.php
!models/checkout/model-1.php
будет результат:
app
├── index.php
└── models
├── index.php
└── checkout
├── model-1.php
├── model-2.php
└── model-3.php
Вопрос
У кого-нибудь есть идеи, как решить проблему? Я знаю, что то, что я делаю, может быть немного более особенным, но каким-то образом я ожидаю, что сработаю так. Обходной путь, чтобы конкретно перечислить все каталоги, которые я хотел бы включить. Тем не менее, обратный путь работает хорошо (исключая указанный тип файла c в любом каталоге, например **/.DS_STORE
). Если нет ошибки logi c и нет четкого решения, я бы отправил сообщение об ошибке на GitHub. Заранее спасибо. В противном случае я хотел бы расширить документы Docker.