Если у вас есть JAR-файл, который необходимо скопировать в другое статическое c Docker изображение, вы можете использовать привязку, чтобы сохранить необходимость повторной сборки. Это позволяет совместно использовать каталоги с хоста в контейнер.
Скажите, что каталог вашего проекта (место компоновки, где находится файл JAR) на хост-компьютере равен /home/vishwas/projects/my_project
, и вам нужно иметь содержимое помещено в /opt/my_project
внутри контейнера. При запуске контейнера из командной строки используйте флаг -v
:
docker run -v /home/vishwas/projects/my_project:/opt/my_project [...]
Изменения, внесенные в локальные файлы в /home/vishwas/projects/my_project
, будут видны непосредственно внутри контейнера 1 , поэтому нет необходимости перестраивать (и, вероятно, не нужно перезапускать) контейнер.
Если используется docker -compose, это можно выразить с помощью volumes
раздела под списком сервисов для этого контейнера:
volumes:
- type: bind
source: /home/vishwas/projects/my_project
target: /opt/my_project
Это работает для разработки, но позже, скорее всего, вы захотите связать файл JAR в образ вместо того, чтобы делиться с хост-системой (чтобы его можно было запустить в производство). Когда наступит это время, просто пересоберите образ и добавьте директиву COPY
в Dockerfile:
COPY /home/vishwas/projects/my_project /opt/my_project
1: Стоит отметить, что по умолчанию он предназначен для чтения / записи, поэтому контейнер также сможет изменять файлы вашего проекта. Для монтирования только для чтения используйте: docker run -v /home/vishwas/projects/my_project:/opt/my_project:ro