Создать из произвольной папки с файлами в контексте сборки и папки Dockerfile - PullRequest
0 голосов
/ 01 февраля 2019

Я бы хотел создать сервис, сохраняя структуру файла моего проекта в чистоте.Но у Docker, похоже, есть проблемы с путями вне контекста сборки.Я создаю пакет и хотел бы хранить все, что связано с Docker, в папке под корнем проекта.Но я не могу найти способ ссылаться на файлы проекта из docker-compose и Dockerfile.При создании контейнеров файлы из проекта должны быть скопированы.

Вот моя текущая структура проекта:

root/
    docker/
        docker-compose.yml
        Dockerfile
        docker_resource.txt
        config
    src/
        project-files.whatever
    root-files.txt

Теперь, если я $cd docker и $docker-compose up, есть две возможности, которые япробовал.Либо мой Dockerfile копирует файлы с помощью COPY .. /path/in/container, либо файл compose содержит инструкции по сборке, такие как:

x-build: &my-build
    context: ..
    dockerfile: docker/Dockerfile

Первый подход не работает.Очевидно, Dockerfile не может ссылаться на что-либо вне контекста сборки.Второй подход работает, но только после того, как я отредактировал команду копирования с docker_resource.txt на docker/docker_resource.txt.В идеале я хотел бы сохранить возможность docker build из ./docker и сохранять все в чистоте - не нужно беспокоиться о контексте создания в Dockerfile.Возможно ли это?

Минимально я хочу найти способ связать файлы, связанные с докером, в произвольной папке и иметь возможность указать контекст сборки в файле compose без дополнительных изменений.

1 Ответ

0 голосов
/ 01 февраля 2019

Вам нужно относиться к src/project-files.whatever как к самодостаточной минимальной сборке.Я бы положил Dockerfile в src.Это должно рассматриваться как часть проекта, и должно быть конкретным для него.Тем не менее, вам все равно нужно будет отредактировать команду копирования.

root/
    docker/
        docker-compose.yml
        docker_resource.txt
        config
    src/
        project-files.whatever
        Dockerfile
    root-files.txt

Вы все равно хотите разделить ваш compose, Dockerfile и ресурсы.В зависимости от того, что находится внутри docker_resource, вы можете переместить его в src.Думайте об изображении как о самой программе, без конфигурации.Я предлагаю размещать ресурсы / конфигурации в томе, чтобы вам не приходилось перестраивать заново с каждым изменением.

Еще один способ сделать это - поместить Dockerfile на один уровень выше и позволить вашему корню бытьпостроить контекст.В этом случае ваша структура будет выглядеть примерно так:

/root
    Dockerfile
    docker-compose.yml
    docker_resource.txt
    config
    src/
        project-files.whatever
    root-Files/
        root-files.txt

Не уверен, нравится ли вам это.

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