Ответ 1
означает, что я должен повторно создавать контейнер приложения каждый раз, когда я что-то меняю, даже если это только опечатка
необязательно, вы можете использовать опцию -v
для docker run
, чтобы вставлять файлы проекта в контейнер. Таким образом, вам не придется восстанавливать изображение докеров.
Обратите внимание, что команда ONBUILD
предназначена для случаев, когда Dockerfile наследует FROM
a родительский файл докеров. Инструкции ONBUILD
, найденные в родительском файле Docker, будут выполняться, когда Docker создает образ дочернего файла Docker.
Это не очень эффективно, например. при создании веб-приложений, где вы привыкли что-то менять, сохранять и удалять обновления в браузере.
Если вы используете контейнер Docker для обслуживания веб-приложения во время итерации этого кода приложения, я предлагаю вам создать специальное изображение Docker, которое содержит только все, чтобы запустить ваше приложение, но код приложения.
Затем поделитесь каталогом, который содержит ваш код приложения на вашей главной машине, с каталогом, из которого файлы приложения будут обслуживаться в контейнере докера.
Например, если я разрабатываю статический веб-сайт, а мое рабочее пространство находится в /home/thomas/workspace/project1/
, я бы начал контейнер с nginx с:
docker run -d -p 80:80 -v /home/thomas/workspace/project1/:/usr/local/nginx/html:ro nginx
Таким образом, я могу изменять файлы в /home/thomas/workspace/project1/
, и изменения отражаются в реальном времени, не перестраивая изображение докеров или даже перезагружая контейнер докера.