Резюме
В этой статье в основном рассказывается, как использовать подключаемый модуль Maven для упаковки приложения SpringBoot в виде образа Docker и загрузки его в частный репозиторий образов Docker Registry. Учащиеся, не знакомые с командами Docker, могут прочитать это в первую очередь.Основные команды Docker для разработчиков.
Docker Registry
Сборка Docker Registry 2.0
docker run -d -p 5000:5000 --restart=always --name registry2 registry:2
Если образ не может быть загружен, вам нужно изменить файл /etc/docker/daemon.json и добавить значение ключа реестра-зеркал, а затем перезапустить службу docker:
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
Докер открывает удаленный API
Измените файл docker.service с помощью редактора vim.
vi /usr/lib/systemd/system/docker.service
Части, которые необходимо изменить:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Модифицированная часть:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
Разрешить Docker поддерживать HTTP-загрузку изображений
echo '{ "insecure-registries":["192.168.3.101:5000"] }' > /etc/docker/daemon.json
Перезапустите службу Docker.
systemctl stop docker
systemctl start docker
Откройте порт сборки Docker брандмауэра.
firewall-cmd --zone=public --add-port=2375/tcp --permanent
firewall-cmd --reload
Создание образов Docker с помощью Maven
Этот код изменен из mall-tiny-02.
Добавьте зависимость docker-maven-plugin в файл pom.xml приложения.
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.1.0</version>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<imageName>mall-tiny/${project.artifactId}:${project.version}</imageName>
<dockerHost>http://192.168.3.101:2375</dockerHost>
<baseImage>java:8</baseImage>
<entryPoint>["java", "-jar","/${project.build.finalName}.jar"]
</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
Связанные инструкции по настройке:
- Executions.execution.phase: здесь настроено создание образа докера, когда maven упаковывает приложение;
- imageName: используется для указания имени образа, mall-tiny — имя склада,
${project.artifactId}это имя изображения,${project.version}название склада; - dockerHost: адрес докер-сервера, на который загружается после упаковки;
- baseImage: базовое изображение, от которого зависит приложение, здесь java;
- entryPoint: команда, выполняемая при запуске док-контейнера;
- resources.resource.targetPath: Скопируйте упакованный файл ресурсов в этот каталог;
- resources.resource.directory: каталог, в котором находятся файлы, которые нужно скопировать, и пакет jar приложения, упакованный maven, хранится в целевом каталоге;
- resources.resource.include: копируемый файл, упакованный пакет jar приложения.
Измените application.yml и измените localhost на db
Контейнер в докере можно рассматривать как независимую виртуальную машину.Когда mall-tiny-docker обращается к локальному хосту, вы не сможете получить доступ к mysql.Доступ к контейнеру докера можно получить через указанное имя службы db.Что касается имени db, вы можете запустить контейнер mall -tiny-docker, если он указан.
spring:
datasource:
url: jdbc:mysql://db:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: root
Используйте IDEA для упаковки проекта и сборки образа
Примечание. Сначала необходимо загрузить зависимый базовый образ, иначе время сборки истечет. Например, если у меня нет локального образа java8, мне нужно сначала извлечь образ, а затем использовать плагин maven для сборки. Это.
- Выполните команду пакета maven:
- Сборка выполнена успешно:
- В зеркальном репозитории уже есть это зеркало:
Запустите проект mall-tiny-docker
запустить службу mysql
- Начните с команды докера:
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
- Войдите в док-контейнер, на котором работает mysql:
docker exec -it mysql /bin/bash
- Откройте клиент с помощью команды mysql:
mysql -uroot -proot --default-character-set=utf8
- Измените разрешения учетной записи root, чтобы любой ip мог получить доступ:
grant all privileges on *.* to 'root'@'%'
- Создайте базу данных торгового центра:
create database mall character set utf8
- будетmall.sqlСкопируйте файл в каталог / контейнера mysql:
docker cp /mydata/mall.sql mysql:/
- Импортируйте файл sql в базу данных:
use mall;
source /mall.sql;
Запустите службу приложений mall-tiny-docker
- Используйте команду docker для запуска (--link означает, что приложение может получить доступ к службе mysql с доменным именем db):
docker run -p 8080:8080 --name mall-tiny-docker \
--link mysql:db \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/mall-tiny-docker/logs:/var/logs \
-d mall-tiny/mall-tiny-docker:0.0.1-SNAPSHOT
- Откройте порт 8080:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
- Для проверки доступа обращайтесь по адресу:http://192.168.3.101:8080/swagger-ui.html
Адрес исходного кода проекта
публика
проект торгового центраПолный набор учебных пособий сериализуется,Обратите внимание на общедоступный номерПолучите это прямо сейчас.