Используйте Dockerfile для создания образа Docker для приложения SpringBoot.

Spring Boot

Резюме

в прошлый раз я писалСоздавайте образы Docker для приложений SpringBoot с помощью подключаемого модуля Maven., описывает способ создания образа Docker с помощью плагина docker-maven-plugin, который опирается на самостоятельно созданный репозиторий образов реестра. В этой статье описывается еще один способ использования Dockerfile для создания образа Docker.Этот способ не требует использования самодельного репозитория образов, а требует только jar-пакет приложения и файл Dockerfile.

Общие инструкции Dockerfile

ADD

Для копирования файлов отформатируйте:

ADD <src> <dest>

Пример:

# 将当前目录下的mall-tiny-docker-file.jar包复制到docker容器的/目录下
ADD mall-tiny-docker-file.jar /mall-tiny-docker-file.jar

ENTRYPOINT

Указывает команду, которая будет выполняться при запуске контейнера докеров, в формате:

ENTRYPOINT ["executable", "param1","param2"...]

Пример:

# 指定docker容器启动时运行jar包
ENTRYPOINT ["java", "-jar","/mall-tiny-docker-file.jar"]

ENV

Используется для установки переменных среды, формат:

ENV <key> <value>

Пример:

# mysql运行时设置root密码
ENV MYSQL_ROOT_PASSWORD root

EXPOSE

Объявите порт, который необходимо выставить (только объявите, что порт не будет открыт), формат:

EXPOSE <port1> <port2> ...

Пример:

# 声明服务运行在8080端口
EXPOSE 8080

FROM

Укажите базовое изображение, от которого вам нужно зависеть, в формате:

FROM <image>:<tag>

Пример:

# 该镜像需要依赖的java8的镜像
FROM java:8

MAINTAINER

Укажите имя сопровождающего в формате:

MAINTAINER <name>

Пример:

MAINTAINER macrozheng

RUN

Команда, выполняемая в процессе создания контейнера, мы можем использовать эту команду для настройки поведения контейнера, например, для установки некоторого программного обеспечения, создания некоторых файлов и т. д. Формат:

RUN <command>
RUN ["executable", "param1","param2"...]

Пример:

# 在容器构建过程中需要在/目录下创建一个mall-tiny-docker-file.jar文件
RUN bash -c 'touch /mall-tiny-docker-file.jar'

Создайте образ приложения SpringBoot, используя Dockerfile

Написать Dockerfile

# 该镜像需要依赖的基础镜像
FROM java:8
# 将当前目录下的jar包复制到docker容器的/目录下
ADD mall-tiny-docker-file-0.0.1-SNAPSHOT.jar /mall-tiny-docker-file.jar
# 运行过程中创建一个mall-tiny-docker-file.jar文件
RUN bash -c 'touch /mall-tiny-docker-file.jar'
# 声明服务运行在8080端口
EXPOSE 8080
# 指定docker容器启动时运行jar包
ENTRYPOINT ["java", "-jar","/mall-tiny-docker-file.jar"]
# 指定维护者的名字
MAINTAINER macrozheng

Упакуйте приложение с помощью maven

Дважды щелкните команду package в IDEA, чтобы упаковать:

展示图片
После успешной упаковки будет отображаться:

[INFO] --- spring-boot-maven-plugin:2.1.3.RELEASE:repackage (repackage) @ mall-tiny-docker-file ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 30.749 s
[INFO] Finished at: 2019-06-16T14:11:07+08:00
[INFO] Final Memory: 43M/306M
[INFO] ------------------------------------------------------------------------

Загрузите пакет jar приложения и файл Dockerfile на сервер Linux:

展示图片
展示图片

Создайте образ докера в Linux

Выполните следующую команду в каталоге, где находится Dockerfile:

# -t 表示指定镜像仓库名称/镜像名称:镜像标签 .表示使用当前目录下的Dockerfile
docker build -t mall-tiny/mall-tiny-docker-file:0.0.1-SNAPSHOT .

Выводится следующая информация:

Sending build context to Docker daemon  36.37MB
Step 1/5 : FROM java:8
 ---> d23bdf5b1b1b
Step 2/5 : ADD mall-tiny-docker-file-0.0.1-SNAPSHOT.jar /mall-tiny-docker-file.jar
 ---> c920c9e9d045
Step 3/5 : RUN bash -c 'touch /mall-tiny-docker-file.jar'
 ---> Running in 55506f517f19
Removing intermediate container 55506f517f19
 ---> 0727eded66dc
Step 4/5 : EXPOSE 8080
 ---> Running in d67a5f50aa7d
Removing intermediate container d67a5f50aa7d
 ---> 1b8b4506eb2d
Step 5/5 : ENTRYPOINT ["java", "-jar","/mall-tiny-docker-file.jar"]
 ---> Running in 0c5bf61a0032
Removing intermediate container 0c5bf61a0032
 ---> c3614dad21b7
Successfully built c3614dad21b7
Successfully tagged mall-tiny/mall-tiny-docker-file:0.0.1-SNAPSHOT

Посмотрите образ докера:

展示图片

запустите службу mysql и установите

1. Начните с команды docker:

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

2. Войдите в док-контейнер с запущенным mysql:

docker exec -it mysql /bin/bash

3. Откройте клиент с помощью команды mysql:

mysql -uroot -proot --default-character-set=utf8

4. Измените разрешения учетной записи root, чтобы любой ip мог получить доступ:

grant all privileges on *.* to 'root'@'%'

5. Создайте базу данных торгового центра:

create database mall character set utf8

6. Скопируйте файл mall.sql в каталог / контейнера mysql:

docker cp /mydata/mall.sql mysql:/

7. Импортируйте файл sql в базу данных:

use mall;
source /mall.sql;

Запустите приложение mall-tiny-docker-file

docker run -p 8080:8080 --name mall-tiny-docker-file \
--link mysql:db \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/mall-tiny-docker-file/logs:/var/logs \
-d mall-tiny/mall-tiny-docker-file:0.0.1-SNAPSHOT

Адрес документа интерфейса доступа http://192.168.3.101:8080/swagger-ui.html:

展示图片

Адрес исходного кода проекта

GitHub.com/macro-positive/…

публика

проект торгового центраПолный набор учебных пособий сериализуется,Обратите внимание на публичный аккаунтПолучите это прямо сейчас.

公众号图片