В этой статье представлены методы использования изображений Maven Docker и делится ими с вами следующим образом:
Maven в настоящее время является одним из самых популярных инструментов управления проектами Java, предоставляя мощные функции управления зависимостями пакетов и строительства приложений.
Docker предоставляет официальные изображения Maven, которые можно использовать для управления и создания Java -приложений. По сравнению с непосредственной установкой инструмента Maven, использование изображений Docker имеет лучшую переносимость и может быть легко переключаться в версиях, что идеально подходит для использования во время непрерывной интеграции.
Для использования официального зеркала Maven, пожалуйста, обратитесь к документации об использовании.
Использование Alibaba Cloud для ускорения
Скорость загрузки официального склада Maven на внутренней сети действительно душераздирающая. Изображение Maven от Alibaba Cloud может значительно улучшить скорость загрузки программных пакетов.
Мы можем добавить конфигурацию изображения Alibaba Cloud на основе официального изображения Maven. Его код доступен по адресу https://github.com/aliyuncontainerservice/maven-image
Его настройки файла конфигурации. Xml выглядит следующим образом
<настройки xmlns = "http://maven.apache.org/settings/1.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemaLocation = "http://maven.apmema.sptiting. https://maven.apache.org/xsd/settings-1.0.0.xsd "> <corcalRepository>/usr/share/maven/ref/repository </localrepository> <зеркала> <зеркал> <!-Это все остальное/public-> <id> aliyyun-nexus </id> <dirror> <dir> <dir> <dir> <der> <dir> <dir> <dir> <dir> <dir> <dir> <! <url> http://maven.aliyun.com/nexus/content/groups/public/ </url> </mirror> <mirror> <!-Это используется для направления репозиторов Public Snapshots в профиле, ниже, в другую группу Nexus-> <duun-nexus-public-snapshots </id идентификатор. <MirrorOf> public-snapshots </mirrorof> <url> http://maven.aliyun.com/nexus/content/repositories/snapshots/ </url> </mirror> </mirrors> </settings>
Служба облачных контейнеров Alibaba предоставляет предварительно построенные изображения Docker для прямого использования Registry.cn-hangzhou.aliyuncs.com/acs/maven.
Мы можем напрямую выполнить следующую команду в текущем каталоге, например, с использованием команды MVN для создания приложения
Скопируйте код следующим образом: Docker Run -it - -rm - -name maven -v "$ (pwd)":/usr/src/app -w/usr/src/app registry.cn-hangzhou.aliyuncs.com/acs/maven mvn clean Install Установка
Если вы хотите иметь возможность кэшировать загруженный репозиторий Maven, мы можем использовать объем файла Docker для его реализации
Сначала выполните следующую команду для создания тома файла с именем "Maven-Repo"
Docker Volume Create-name maven-repo
В последующем вызове установите его в каталог загрузки хранилища в изображении Maven
Скопируйте код следующим образом: Docker Run -it - -rm - -name maven -v "$ (pwd)":/usr/src/app -v maven -repo:/usr/share/maven/ref -w/usr/src/apps regristry.cn-hangzhou.aliyuncs.com/acs/maven mvn лента ленты.
Таким образом, хранилище Maven не будет загружаться каждый раз.
Оптимизировать DockerFile для улучшения скорости сборки
Мы можем создавать приложения в DockerFile и использовать механизм иерархического кэширования во время конструкции Docker, чтобы улучшить скорость сборки
Вот образец файла dockerfile.build
Из Registry.cn-hangzhou.aliyuncs.com/acs/maven:3-jdk-8env my_home =/usr/src/compun mkdir -p $ my_homeworkdir $ my_homeadd pom.xml $ my_home# Уберите все загрузки. ["/usr/local/bin/mvn-entrypoint.sh","mvn","verify","clean","--fail-never"цин. Добавить Sourceadd. $ My_home# run maven vivifyrun ["/usr/local/bin/mvn-entrypoint.sh","mvn","verify"]
Одним из важных трюков является сначала добавить pom.xml в рабочий каталог, используйте команду Maven, чтобы загрузить пакет JAR, необходимый приложением, а затем добавить исходный файл приложения для компиляции. Таким образом, до тех пор, пока POM.xml не обновляется, пакет JAR для зависимости не будет перегружен, что может значительно ускорить скорость конструкции изображения.
Мы можем скомпилировать приложение через следующую команду
Docker Build -t Builder -Img -f Dockerfile.build.
Отдельная компиляция приложения и конструкция изображений Docker
Для статических скомпилированных языков нам обычно нужно отделить процесс компиляции приложения от процесса строительства зеркала. Есть два основных соображения:
Мы можем скопировать результаты компиляции приложения с изображения Docker, следующим образом
Docker Build -t Builder -Img -f dockerfile.build .docker Create -Builder -Builder -name -Builder -Imgdocker CP Builder:/usr/src/app/target ./target
В настоящее время результат строительства Maven копируется в подкаталог текущего каталога.
После этого мы можем использовать еще один DockerFile для создания изображений приложений. Я не буду вдаваться в подробности, если у меня есть ограниченное пространство.
Суммировать
В этой статье используется Maven в качестве примера для представления некоторых общих методов для Docker в построении применения.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.