Развертывание реального проекта SpringBoot в среде Linux (на основе Docker Compose)

Spring Boot

Фактический адрес торгового центра проекта электронной коммерции SpringBoot:GitHub.com/macro-positive/…

Введение

Самый простой способ развернуть mall под Linux — использовать два скрипта docker-compse для завершения развертывания. Первый скрипт используется для развертывания сервисов (mysql, redis, nginx, rabbitmq, elasticsearch, kibana, mongo), от которых зависит торговый центр, а второй скрипт используется для развертывания приложений в торговом центре (mall-admin, mall- поиск, торговый центр-портал).

Создание и использование среды Docker

Конкретная ссылка:Основные команды Docker для разработчиков

создание и использование среды docker-compose

Конкретная ссылка:Развертывание приложений SpringBoot с помощью Docker Compose

docker-compose развертывание проекта торгового центра

Требования к конфигурации запуска

Версия CenterOS7.6, рекомендуемая память выше 4G

Файлы, связанные с развертыванием

Подготовка к развертыванию

Упакуйте и загрузите образ приложения торгового центра

Вам необходимо упаковать образы докеров mall-admin, mall-search и mall-portal.Создавайте образы Docker для приложений SpringBoot с помощью подключаемого модуля Maven.

Скачайте все необходимые образы Docker для установки

docker pull mysql:5.7
docker pull redis:3.2
docker pull nginx:1.10
docker pull rabbitmq:3.7.15-management
docker pull elasticsearch:6.4.0
docker pull kibana:6.4.0
docker pull mongo:3.2

elasticsearch

  • Необходимо установить параметры ядра системы, иначе оно не запустится из-за нехватки памяти.
# 改变设置
sysctl -w vm.max_map_count=262144
# 使之立即生效
sysctl -p
  • Вам необходимо создать каталог /mydata/elasticsearch/data и установить разрешения, иначе запуск не будет выполнен из-за несанкционированного доступа.
# 创建目录
mkdir /mydata/elasticsearch/data/
# 创建并改变该目录权限
chmod 777 /mydata/elasticsearch/data

nginx

Вам нужно скопировать файл конфигурации nginx, иначе запуск не удастся, потому что при монтировании нет файла конфигурации.

# 创建目录之后将nginx.conf文件上传到该目录下面
mkdir /mydata/nginx/

Выполните скрипт docker-compose-env.yml

На сервере Linux, на который загружен файл, выполните команду docker-compose up, чтобы запустить все службы, от которых зависит mall.

version: '3'
services:
  mysql:
    image: mysql:5.7
    container_name: mysql
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root #设置root帐号密码
    ports:
      - 3306:3306
    volumes:
      - /mydata/mysql/data/db:/var/lib/mysql #数据文件挂载
      - /mydata/mysql/data/conf:/etc/mysql/conf.d #配置文件挂载
      - /mydata/mysql/log:/var/log/mysql #日志文件挂载
  redis:
    image: redis:3.2
    container_name: redis
    command: redis-server --appendonly yes
    volumes:
      - /mydata/redis/data:/data #数据文件挂载
    ports:
      - 6379:6379
  nginx:
    image: nginx:1.10
    container_name: nginx
    volumes:
      - /mydata/nginx/nginx.conf:/etc/nginx/nginx.conf #配置文件挂载
      - /mydata/nginx/html:/usr/share/nginx/html #静态资源根目录挂载
      - /mydata/nginx/log:/var/log/nginx #日志文件挂载
    ports:
      - 80:80
  rabbitmq:
    image: rabbitmq:3.7.15-management
    container_name: rabbitmq
    volumes:
      - /mydata/rabbitmq/data:/var/lib/rabbitmq #数据文件挂载
      - /mydata/rabbitmq/log:/var/log/rabbitmq #日志文件挂载
    ports:
      - 5672:5672
      - 15672:15672
  elasticsearch:
    image: elasticsearch:6.4.0
    container_name: elasticsearch
    environment:
      - "cluster.name=elasticsearch" #设置集群名称为elasticsearch
      - "discovery.type=single-node" #以单一节点模式启动
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m" #设置使用jvm内存大小
    volumes:
      - /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载
      - /mydata/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载
    ports:
      - 9200:9200
  kibana:
    image: kibana:6.4.0
    container_name: kibana
    links:
      - elasticsearch:es #可以用es这个域名访问elasticsearch服务
    depends_on:
      - elasticsearch #kibana在elasticsearch启动之后再启动
    environment:
      - "elasticsearch.hosts=http://es:9200" #设置访问elasticsearch的地址
    ports:
      - 5601:5601
  mongo:
    image: mongo:3.2
    container_name: mongo
    volumes:
      - /mydata/mongo/db:/data/db #数据文件挂载
    ports:
      - 27017:27017

После загрузки выполните следующую команду в текущем каталоге:

docker-compose -f docker-compose-env.yml up -d

展示图片

Сделайте следующие настройки для зависимых служб

Когда все зависимые службы запущены, необходимо выполнить некоторые настройки для следующих служб.

mysql

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

  • Скопируйте файл mall.sql в каталог / контейнера mysql:
docker cp /mydata/mall.sql mysql:/
  • Заходим в контейнер mysql и делаем следующее:
#进入mysql容器
docker exec -it mysql /bin/bash
#连接到mysql服务
mysql -uroot -proot --default-character-set=utf8
#创建远程访问用户
grant all privileges on *.* to 'reader' @'%' identified by '123456';
#创建mall数据库
create database mall character set utf8;
#使用mall数据库
use mall;
#导入mall.sql脚本
source /mall.sql;

elasticsearch

Китайский токенизатор IKAnalyzer необходимо установить и перезапустить.

docker exec -it elasticsearch /bin/bash
#此命令需要在容器中运行
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.0/elasticsearch-analysis-ik-6.4.0.zip
docker restart elasticsearch

rabbitmq

Вам нужно создать пользователя торгового центра и установить виртуальный хост в /mall.

  • Посетите адрес страницы управления:http://192.168.3.101:15672/
    展示图片
  • Введите пароль учетной записи и войдите в систему: гость гость
  • Создайте учетную запись и назначьте ей роль администратора: торговый центр торговый центр
    展示图片
  • Создайте новый виртуальный хост как: /mall
    展示图片
  • Щелкните пользователя торгового центра, чтобы перейти на страницу конфигурации пользователя.
    展示图片
  • Настройте разрешения виртуального хоста для пользователя торгового центра.
    展示图片

Выполните скрипт docker-compose-app.yml

На Linux-сервере, куда загружен файл, выполните команду docker-compose up, чтобы запустить все приложения торгового центра.

version: '3'
services:
  mall-admin:
    image: mall/mall-admin:1.0-SNAPSHOT
    container_name: mall-admin
    ports:
      - 8080:8080
    external_links:
      - mysql:db #可以用db这个域名访问mysql服务
  mall-search:
    image: mall/mall-search:1.0-SNAPSHOT
    container_name: mall-search
    ports:
      - 8081:8081
    external_links:
      - elasticsearch:es #可以用es这个域名访问elasticsearch服务
      - mysql:db #可以用db这个域名访问mysql服务
  mall-portal:
    image: mall/mall-portal:1.0-SNAPSHOT
    container_name: mall-portal
    ports:
      - 8085:8085
    external_links:
      - redis:redis #可以用redis这个域名访问redis服务
      - mongo:mongo #可以用mongo这个域名访问mongo服务
      - mysql:db #可以用db这个域名访问mysql服务
      - rabbitmq:rabbit #可以用rabbit这个域名访问rabbitmq服务

После загрузки выполните следующую команду в текущем каталоге:

docker-compose -f docker-compose-app.yml up -d

展示图片

Откройте брандмауэр, чтобы получить доступ ко всем службам на других хостах.

systemctl stop firewalld

Пока все службы запускались нормально

展示图片

展示图片

публика

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

公众号图片