最近用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
- 创建新的虚拟host:
/mall
- 点击
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