mall-swarm:基础服务Docker部署指南(CentOS 7.6 64bit)

562 阅读3分钟

mall学习教程 (macrozheng.com)

最近用Docker实战了一波mall-swarm的生产部署,其中的酸甜苦辣不足为外人道也。方便日后查阅,如今对各种资料进行总结归纳,也希望能够给各位码友们一点帮助。

环境安装

安装Docker环境

  • 安装yum-utils
yum install -y yum-utils device-mapper-persistent-data lvm2
  • yum源添加docker仓库位置
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 安装docker服务
yum install docker-ce

安装过程中会检测依赖关系,请输入y并回车,等待下载完成

检测

完成后输入y并回车进行安装,等待安装完成

安装

成功!

完成

  • 启动docker服务
systemctl start docker

安装Java环境

  • 下载镜像
docker pull java:8

安装Docker-Compose

  • 下载Docker-Compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  • 修改文件的权限为可执行
chmod +x /usr/local/bin/docker-compose
  • 查看是否安装成功
docker-compose --version

环境配置

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和mime.types文件上传到该目录下面
mkdir /mydata/nginx/config

Logstash

创建/mydata/logstash目录,并将Logstash的配置文件logstash.conf拷贝到该目录

mkdir /mydata/logstash

执行docker-compose-env.yml脚本

docker-compose-env.yml上传至/mydata/mallconfig目录下

切换目录至/mydata/mallconfig

cd /mydata/mallconfig

执行docker-compose-env.yml脚本

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

成功!

成功

若执行脚本报错iptables: No chain/target/match by that name,请执行如下命令:

1. 清理 chains

sudo iptables -t filter -F
sudo iptables -t filter -X

2. 重启 Docker 服务

systemctl restart docker

依赖服务设置

MySQL

需要创建mall数据库并创建一个可以远程访问的对象reader

  • 上传mall.sql/mydata/mallconfig,将mall.sql拷贝至mysql容器的/目录下
docker cp /mydata/mallconfig/mall.sql 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

  • 进入容器
docker exec -it elasticsearch /bin/bash
  • 下载中文分词器IKAnalyzer(项目用的7.6.2版本)
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
  • 下载完成后,输入y安装中文分词器
  • 安装成功后,退出容器,并重启服务
exit
docker restart elasticsearch

logstash

安装json-lines插件,并重启服务

  • 进入容器
docker exec -it logstash /bin/bash
  • 安装插件
logstash-plugin install logstash-codec-json_lines
  • 退出容器
exit
  • 重启服务
docker restart logstash

rabbitmq

创建一个mall用户并设置虚拟host为/mall

  • 查看防火墙状态
systemctl status firewalld
  • 如果不是active (running)则启用防火墙
systemctl start firewalld
  • 开启15672端口
firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --reload
  • 登录服务器添加入站规则
  • 请求地址查看是否安装成功('ip'替换成公网ip地址)
curl ip:15672
  • 请求ip:15672输入guest guest并登录
  • 创建mall账号并将其设置为administrator

administrator

  • 创建新的虚拟host:/mall

虚拟host

  • 点击mall用户进入用户配置界面

用户配置界面

  • mall用户配置/mall虚拟host权限

配置

elasticsearch

  • 开启9200端口
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --reload
  • 登录服务器添加入站规则
  • 请求地址查看是否安装成功('ip'替换成公网ip地址)
curl ip:9200

kibana

  • 开启5601端口
firewall-cmd --zone=public --add-port=5601/tcp --permanent
firewall-cmd --reload
  • 登录服务器添加入站规则
  • 请求地址ip:5601查看是否安装成功('ip'替换成公网ip地址)

至此Docker镜像全部安装完成

  • 镜像列表
docker images

镜像列表

  • 容器中运行的应用列表
docker ps -a

应用列表