Конфигурирование файла Docker для «чтения» из каталога? - PullRequest
1 голос
/ 03 ноября 2019

Я создаю веб-приложение (простой сайт фляги), в котором используется Docker. Я хочу, чтобы мой код разработки не находился в докере, а выполнялся средой разработки (с использованием python3), которую я определил в моем файле докера. Я знаю, что могу использовать синтаксис COPY . . в файле docker для копирования моего исходного кода в изображение для выполнения, но это нарушает мою цель отделения контейнера от моего источника. Есть ли способ сделать так, чтобы контейнер докера прочитал и выполнил код, который находится в каталоге, из которого я запускаю команду docker container run?

Прямо сейчас мой контейнер использует копирующую компанию для копирования всего исходного кода вконтейнер. Затем он использует команду CMD для автоматического запуска приложения фляги:

CMD [ "python", "flask_app/server.py" ]

(я храню весь свой код фляги в каталоге с именем flask_app). Я предполагаю, что это работает, потому что все это было скопировано в контейнер (согласно спецификациям, приведенным в файле Docker) и выполняется, когда я запускаю контейнер. Я хотел бы, чтобы контейнер вместо этого получал доступ и выполнял flask_app/server.py, не копируя эту информацию в себя - возможно ли это? Если да, то как?

1 Ответ

1 голос
/ 03 ноября 2019

Вместо использования COPY для перемещения кода в контейнер, вы будете использовать «привязку» (https://docs.docker.com/storage/bind-mounts/).

Когда вы запустите контейнер, вы сделаете это с помощью командынапример:

docker run --mount type=bind,source=<path_outside_container>,target=<path_inside_container> <image_tag>

Для переносимости я рекомендую поместить эту строку в скрипт, предназначенный для запуска из корня хранилища, и иметь <path_outside_container> be "$(pwd)", чтобы он работал на другихкомпьютеры людей. Вам нужно будет настроить <path_inside_container> и свой CMD в зависимости от того, где вы хотите, чтобы код находился внутри контейнера.

(Очевидно, вы также можете установить любые другие параметры, которые вам нужныкоманда, например --it --rm или -p <whatever>.)

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