spring-boot-maven-plugin
плагинjib-maven-plugin
плагинdockerfle-maven-plugin
плагинТо есть используйте
Docker
из Пакет Заказидти Пакет,беда,Я не буду здесь много говорить.
SpringBootу меня есть встроенный
Docker
Зеркало Пакетинструмент,существоватьspring-boot-starter-parent
середина,Нам не нужно быть лишнимиизнастраивать。 преимущество:Нет необходимости писатьDockerFile
,Springпредположениеиз Безопасность、Память、Нет необходимости беспокоиться о производительности и других проблемах.
от
Docker
,также Нет необходимости писатьDockerFile
,Jib
можно переместить непосредственно вобозначениеизDocker
склад。
нужно написать
DockerFile
Также требуется местныйDocker
среда,Но лучше всего использовать из,Самый стабильный,Максимально свободное управление из. Достоинства: Стабильный, не подвержен сетевым ограничениям, DockerFile пишется самостоятельно и имеет высокую степень свободы. Вы можете менять его как хотите.
Нам не нужно вводить зависимости,SpringBoot
Принес свой собственный。
Пакет Заказ:
mvn spring-boot:build-image
Но я не люблю пользоваться Заказом,IDEA дает вам визуализацию,Зачем стучать?Заказ Шерстяная ткань?и ЗаказвозвращатьсянуждатьсянастраиватьMaven
средапеременная。
Просто сражайсяJAR
Та же сумка,Давайте просто нажмем на него.
Однако упаковка SpringBoot не удастся из-за перегрузки сети.
Упаковка комплектуется так:
Проверим, есть ли локальное зеркало.
Запустите тест.
Честно говоря, мне не удалось добежать,Потому что в моем проекте есть что-то, с чем сложно справиться.,Например, оплата WeChatизфайл сертификата иKEY
документ,Вообще говоря, проекты SpringBoot могут,Но я просто не могу этого сделать,мне нужно написать это самомуDockerFile
идти Просто создайте сопоставление томов。
Настройте зависимости плагина:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.7.RELEASE</version>
<configuration>
<mainClass>com.toemail.smtp.ToEmailApplication</mainClass>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.3.1</version>
<configuration>
<!--fromУзел используется длянастраивать Зеркалоиз База Зеркало,ЭквивалентноDocerkfileсерединаизFROMКлючевые слова-->
<from>
<!--База Зеркалоимя(предположение Используйте отечественную общественность Зеркало,Быстрая скорость загрузки,более стабильный) -->
<image>java:8u172-jre-alpine</image>
</from>
<to>
<!--Зеркалоимя和tag,Использована встроенная переменная mvn ${project.version}.,Указывает текущий проектизversion-->
<image>demo:${project.version}</image>
</to>
<!--Связанные с контейнеромизсвойство-->
<container>
<!--jvmПамятьпараметр-->
<jvmFlags>
<jvmFlag>-Xms4g</jvmFlag>
<jvmFlag>-Xmx4g</jvmFlag>
</jvmFlags>
<!--быть разоблаченнымизпорт-->
<ports>
<port>8899</port>
</ports>
</container>
</configuration>
</plugin>
Здесь я использую последнюю версию.
кроме того,Я написал комментарии ко многим конфигурациям.,Если вы хотите узнать больше, вы можете проверить этоJIB
из Связанные документы。
mvn compile com.google.cloud.tools:jib-maven-plugin:2.3.0:dockerBuild
Если возникает эта ошибка:
Просто добавьте следующую конфигурацию:
Похоже, этот официальный репозиторий требует аутентификации для входа. Блин, мне очень не нравится этот ломаный плагин, это херня (он втайне выругался).
это зеркало,нуждатьсяобозначениеспецифическийскладURL
адресиз。
Но у меня это сейчас не работает, поэтому хочу перейти на склад Алибаба.
Изменено на это:
<to>
<image>registry.cn-qingdao.aliyuncs.com/jibjava/jibfirst</image>
</to>
Alibaba Cloud иногда требует пароль для частных складов, который также можно изменить на другие частные склады.
<from>
<image>registry.cn-qingdao.aliyuncs.com/jibjava/jibfirst</image>
<auth>
<username>Облачный аккаунт Алибаба</username>
<password>Пароль к облаку Алибаба</password>
</auth>
</from>
from: Конфигурация извлеченного образа, по умолчанию — gcr.io/distroless/java. to: Конфигурация создаваемого изображения. изображение: имя извлеченного или сгенерированного изображения. auth: информация аутентификации, соответственно имя пользователя и пароль. контейнер: свойства контейнера jvmFlgs: параметры контейнера JVM, такие же, как ENTRYPOINT в Dockerfile. mainClass: полное имя класса запуска. args: входящие параметры основного метода порты: порты, предоставляемые контейнером, которые имеют ту же функцию, что и EXPOSE Dockerfile.
ПисатьDockerFile
:
FROM c9katayama/java8:latest
# Создать каталог
RUN mkdir -p /dashboard
# Копировать файлы
COPY dashboard.jar /dashboard/dashboard.jar
# открытый порт
EXPOSE 8099
# Начать заказ
CMD ["java", "-jar", "/dashboard/dashboard.jar"]
DockerFile
Не так много сказать,Пожалуйста, учитесь самостоятельно.
Отображение зависимостей:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.11</version>
<dependencies>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>javax.activation-api</artifactId>
<version>1.2.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<imageTags>
<imageTag>${project.version}</imageTag>
<imageTag>latest</imageTag>
</imageTags>
</configuration>
</plugin>
ноэтот разделплагинизXML
Не используйте это,потому что этоrocketmq
Визуальная консольизчиновник Писатьиз,Вы можете настроить его самостоятельно.
нормальныйизв целомплагинизXML
вот и все:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${project.artifactId}:${project.version}</imageName>
<!-- обозначение Dockerfile путь-->
<dockerDirectory>${basedir}/docker</dockerDirectory>
<!-- Это копировать jar Доставка docker Конфигурация каталога отображения контейнера,также可以Писатьприезжать Docokerfile середина -->
<resources>
<resource>
<targetPath>/ROOT</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
Оставшуюся часть конфигурации вы можете найти в своем браузере.:docker-maven-plugin
Элементы конфигурации
mvn package
Я здесь прямоIDEA
Нажмите Пакет,Ненавижу заказ.
Уведомление:нуждаться Доступно локально
Docker
,и включить удаленное подключение,Windows
изDocker
Установить Маленький Предыдущая статья Джейн Писать Проходитьиз,Вы можете взглянуть,Linux
избез Писать。
Гораздо проще в использовании, как только успех.
Это по-прежнему лучшее, рекомендую! ! !
Сяо Цзянь решает быть последним,С первым все в порядке, да?,ноGoogle
Это ненуждаться Доступно локальноDocker
среда,Первым я все-таки включил волшебный Пакетиз,Последний очень хорош.
Это зависит от ситуации. Давно не обновлялся! Мне становится лень, эй, увидимся в следующей статье.