Практика докеризации приложения Spring Boot + MongoDB

Spring Boot Java Docker MongoDB

Эта статья направлена ​​на отработку базового использования Docker путем докеризации конкретного проекта Spring Boot + MongoDB. После докеризации проекта внутренняя служба получает доступ к базе данных в обычном режиме, и одностраничное веб-приложение, размещенное на внутренней службе, по-прежнему может быть открыто.Короче говоря, проект находится в рабочем состоянии, как и ожидалось. Конкретные проекты см.этот репозиторий GitHub.

Чтобы изучить основные принципы и основы использования Docker, вы можете обратиться к этой электронной книге с открытым исходным кодом.Docker — от начала до практики, я считаю эту книгу лучшей написанной на данный момент, по крайней мере лучше некоторых подобных изданий.

В этой статье не рассматриваются основные принципы и основы использования Docker. Если вы хотите изучить Docker, обратитесь к книге с открытым исходным кодом выше. В этой статье будет записана практика докеризации проекта.

1. Подготовка окружающей среды

  • java: JDK 1.8
  • Linux: Ubuntu 17.10.1
  • Docker CE: 17.12.0

2. Получение официального образа Docker

В магазине Docker найдите образ Docker, который вы хотите получить, и следуйте инструкциям, чтобы получить его.

从 Docker Store 中获取官方镜像

2.1 Получить Java JRE

docker pull store/oracle/serverjre:8 

2.2 Получить Java JRE

docker pull mongo 

3. Создайте собственный контейнер Docker

Для создания проекта Java в виде контейнера Docker требуются следующие файлы:

  • JAR-файл
  • локальный файл конфигурации
  • Докерфайл

Содержимое Dockerfile выглядит следующим образом:

# 基础 JRE 镜像
FROM store/oracle/serverjre:8

# 修改时区,使得容器时间为北京时间
RUN echo "Asia/Shanghai" > /etc/timezone

# 将所需项目文件复制进入容器中
WORKDIR /app
ADD ./ClusterDevicePlatform-server-1.8.9-release.jar /app
ADD ./setting /app

# 暴露容器的端口
EXPOSE 30232 8080

# 运行项目
CMD ["java", "-jar", "-Dfile.encoding=UTF-8", "ClusterDevicePlatform-server-1.8.9-release.jar"]

После записи файла Dockerfile в каталоге сервера Java будет три файла.Файл настроек и пакет Jar являются компонентами исходного проекта, которые необходимо использовать вместе.Настройка должна быть размещена в каталоге одного уровня. пакета Jar, как показано ниже:

Java 服务器目录

Затем выполните следующую команду:

docker build -t ky-server .

Образ Docker для начала создания серверных приложений Java, сгенерированный образ с именем «ky-server».

После выполнения построения зеркала Docker, созданного серверным приложением Java.docker imagesкомандой, вы можете получить все образы Docker, сохраненные на этом компьютере, как показано ниже:

本机的四个 Docker 镜像

4. Запустите контейнерное приложение Java-сервера.

4.1 Создание сети Docker

С улучшением сети Docker официально рекомендуется добавлять контейнеры в настраиваемую сеть Docker для подключения нескольких контейнеров.Затем создайте новую сеть Docker и назовите ее.bitky:

docker network create -d bridge bitky

Откройте два раковины и выполните следующие две команды соответственно:

docker run --rm --name kylinked-mongo  -p 27017:27017 --network bitky mongo:latest

docker run --rm --name kylinked-server -p 80:8080 -p 30232:30232 --network bitky ky-server:latest

Открыты, чтобы открыть две стойки регистрации MongoDB Shell и серверные приложения Java, порт контейнера MongoDB 27017 сопоставлен с одноименной операционной системой, порт 8080 сопоставлен с портом 80 операционной системы Java-сервера, легкий доступ через браузер. Образ MongoDB напрямую обычными средствамиpullТо есть в этой статье они повторяться не будут.

Откройте новый терминал для просмотра информации о состоянии контейнера:

docker container ls

На рисунке вы можете визуально увидеть состояние сопоставления портов и состояние работы контейнера.

Docker 容器运行状态

4.2 Установите часовой пояс как «Пекинское время» в районе Дунба в Docker.

Часовой пояс по умолчанию в контейнере — UTC.Если вы хотите изменить часовой пояс самодельного образа Docker, вам нужно всего лишь добавить в Dockerfile следующие два предложения:

RUN echo "Asia/Shanghai" > /etc/timezone
RUN dpkg-reconfigure -f noninteractive tzdata

Следует отметить, что вышеуказанное утверждение было добавлено в Dockerfile, приведенное в этой статье, и нет необходимости повторять это утверждение.RUN dpkg-reconfigure -f noninteractive tzdataэто команда Ubuntu для изменения часового пояса. Если ваш пользовательский образ использует другой дистрибутив, то команда здесь также должна измениться. В этой статье в качестве базового образа используется JRE.После экспериментов выяснилось, что нужно выполнить только первое предложение инструкции.

Ссылка на ссылку

  1. Docker Documentation
  2. Docker развертывает проект SpringBoot для интеграции образа Redis для подсчета доступа Демонстрация
  3. Приложение Spring Boot опубликовано в Docker
  4. Шаг за шагом для создания приложения Spring Boot + Docker
  5. Как установить часовой пояс контейнера в Docker