- 安装docker
Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
1.1 通过 uname -r 命令查看你当前的内核版本
![](https://img-blog.csdnimg.cn/img_convert/da05e9a1e48bd307aa9b31a1af41e8d3.png)
1.2 更新yum包到最新:yum update
![](https://img-blog.csdnimg.cn/img_convert/6c940f54207e47c725e8b55b573faa6c.png)
到最后选择“y”
![](https://img-blog.csdnimg.cn/img_convert/ac660183bc8565d8bfc0444ba919a48c.png)
等待安装成功
1.3 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
![](https://img-blog.csdnimg.cn/img_convert/7c6cb8603e4c22d499c8001d108556b3.png)
1.4 设置yum源,注意空格
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
![](https://img-blog.csdnimg.cn/img_convert/07b566923356e722dab46bf9b2f3f86b.png)
1.5 可以查看所有仓库中所有docker版本,并选择特定版本安装
![](https://img-blog.csdnimg.cn/img_convert/8ddfd983db136172a3cf108abde3800c.png)
1.6 安装docker
yum install docker-ce-17.12.0.ce-1.el7.centos
![](https://img-blog.csdnimg.cn/img_convert/40b1187829df59984a50a459b91ba03f.png)
执行之后,看到有选择的就选y
![](https://img-blog.csdnimg.cn/img_convert/169cfbaba8558a3e881fb60bbabf2876.png)
看到“完毕”字样代表已经安装好,
![](https://img-blog.csdnimg.cn/img_convert/1a4a703579a42d48e0c6a24fd4722583.png)
启动并加入开机启动
systemctl start docker
systemctl enable docker
![](https://img-blog.csdnimg.cn/img_convert/574ce17022bad380eb236ba21edbfe0b.png)
验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
执行命令:docker version
![](https://img-blog.csdnimg.cn/img_convert/75f5c75fed10c465b83d5a5f4122fc48.png)
- 安装docker-compose
执行命令
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`una me -s`-`uname -m` -o /usr/local/bin/docker-compose
![](https://img-blog.csdnimg.cn/img_convert/2ade3d929e0ff0a0f0f7bc3228533281.png)
赋运行权限
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
![](https://img-blog.csdnimg.cn/img_convert/69afc084a09533bafa4e367b2f4da870.png)
查看版本
docker-compose version
![](https://img-blog.csdnimg.cn/img_convert/0d3ca2bbde592aa4ae91df3d4ccac8af.png)
安装完毕
- 编写docker-compose.yml文件,内容如下
version: "3"
#网络配置,容器中各个服务可以相互访问,其中shared是自己起的名字,要对应下面的网络配置名字
networks:
shared:
driver: bridge
services:
mysql:
container_name: mysql
restart: always
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=123456
#挂载
volumes:
# - /opt/mysql/conf:/etc/mysql/conf.d
# - /opt/mysql/logs:/logs
- /opt/mysql/data:/var/lib/mysql
ports:
- 3306:3306
tty: true
networks:
- shared
redis:
container_name: redis
restart: always
image: redis
privileged: true
volumes:
- /opt/redis/data:/data
- /opt/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /opt/redis/logs:/logs
command: [ "redis-server","/usr/local/etc/redis/redis.conf" ]
ports:
- 6379:6379
environment:
- TZ="Asia/Shanghai"
networks:
- shared
iotCloud:
image: kdvolder/jdk8
#image: bryink/oracle_jdk:8
# 改成你自己的,不改也无所谓
container_name: iotCloud
working_dir: /app
restart: always
volumes:
- /app:/app
# jar 包名称必须改成你自己的
command: java -Xms512M -Xmx2048M -Xss1M -Duser.timezone=GMT+8 -jar /app/iotcloud-1.0.0.jar
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "10"
ports:
- 8089:8089
depends_on:
- mysql
tty: true
networks:
- shared
tomcat:
#tomcat服务名称
#容器名称
container_name: tomcat8
environment:
TZ: Asia/Shanghai
#镜像名称
image: tomcat:8.5.20
#总是重启后启动
restart: always
#端口映射
ports:
- 8080:80
#挂载
volumes:
- /opt/docker-tomcat/logs1:/usr/local/tomcat/logs
- /opt/docker-tomcat/webapps:/usr/local/tomcat/webapps
- /opt/docker-tomcat/conf/server.xml:/usr/local/tomcat/conf/server.xml
depends_on:
- mysql
networks:
- shared
注意缩进格式!
把jar包通过Xftp工具传入到app目录下,
- 开放相关端口
查看防火墙状态
systemctl status firewalld
开启防火墙
systemctl start firewalld
查看端口信息
firewall-cmd --list-ports # 只看端口信息
本项目中主要用到8080、8089、3306、6379端口
执行以下命令对外开放端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
重启防火墙,并且查看是否相应端口是否已经对外开放
service firewalld restart
firewall-cmd --list-ports
- 将编译好的docker-compose.yml文件上传到opt目录下
把docker-compose.yml包通过Xftp工具传入到opt目录下
在opt目录下执行命令:docker-compose up -d (可以不带-d,带上-d是代表后台运行)
![](https://img-blog.csdnimg.cn/img_convert/f402a1fb987ba3bc138cce6a5797f791.png)
等待运行完毕,会报如下错误
![](https://img-blog.csdnimg.cn/img_convert/58c49ee9c87578085678977fde67e64d.png)
是因为server.xml文件没有同步.
拿到labms项目中的server.xml文件放到opt/docker-tomcat/conf下
查看当前容器:
docker ps -a
![](https://img-blog.csdnimg.cn/img_convert/aafd0a14fa2054b72cc46d8de0b49b50.png)
可以看到当前容器已经存在
查看当前正在运行的容器
docker ps
![](https://img-blog.csdnimg.cn/img_convert/82314e64a5f7ac71cda5e587af2fa4f3.png)
在上图中STATUS一栏,如果都是显示以UP开头的则表示都正常运行了
我们可以看到第一个tomcat是正常运行的,确认端口8080是对外开放的情况下,用浏览器访问http://192.168.2.222:8080/(前面的ip是服务器的ip),正常情况下会出现tomcat界面
如果出现其他异常,则需要进一步排查。
在做这个文档之前出现了一点小问题,问题是webapps下面没有对应的文件
![](https://img-blog.csdnimg.cn/img_convert/72f1d8bcf3a5d1db9ea3b6e333ee414b.png)
目前不知道为何用脚本运行之后没有这些文件,故采取补救方案,把对应的文件直接拷贝到webapps目录下,删除容器,重启即可正常访问。
注:在运行docker-compose up -d 命令后 如果容器都正常运行了,最好去webapps目录下去检查下是否有这些文件,如果没有的话需要手动去拷贝。文件可以找后端开发要。
Tomcat正常运行之后,把对应的labms war包放到webappps文件夹下。既上图的labms.war文件,放进去之后重启tomcat自动生成labms文件夹。运行成功之后,labms就部署成功了。
- 数据库数据迁移(首次部署)
在确保数据库已经正常运行的情况下
lsof -i:3306 使用此命令查看3306是否在服务器中运行(前面有写过查看端口的三个命令,这是其一)
如下图所示,则表示mysql数据库正常运行(在没有更改数据库端口的情况下,一般也不会更改)
准备好sql文件(由后端提供),放入到对应的目录,个人是放在opt目录下的
执行命令:
docker cp iotcloud_jjwl.sql de1e1a0d1c97:/usr/local
说明:将Linux上指定位置iotcloud_jjwl.sql文件拷贝至容器内部/usr/local位置。 de1e1a0d1c97为mysql容器id。
进入mysql容器内部
命令:docker exec -it mysql bash (注意:此处的mysql是mysql数据库容器的名称,因为我起的是mysql,所以就是mysql),容器名称在哪里看?下图红框部分是容器名称的地方
![](https://img-blog.csdnimg.cn/img_convert/b6f68150002fed0caa5260dd97beb4bc.png)
下图是执行进入mysql容器内部的命令,正常情况
![](https://img-blog.csdnimg.cn/img_convert/c83e59bd137db8f1e1513f18d1070bc5.png)
进入之后执行命令,在Enter password需要输入提前知晓的数据库密码,正确的话就会出现下图所示。
![](https://img-blog.csdnimg.cn/img_convert/f2ed1d44470ae3a09f058cd0e6a01494.png)
创建数据库
命令:create database iotcloud_jjwl;(注意英文下的分号不可少!)
create database labms;
查看数据库:show databases;
使用数据库命令:
use iotcloud_jjwl;
source /usr/local/iotcloud_jjwl.sql;
等待执行完成。再用同样的方法去执行labms.sql语句
use database labms;
source /usr/local/labms.sql;
等待执行完成。
这两步导入数据的耗时比较长,可以开两个窗口同时执行。
上面的步骤如果有数据库导入工具也可以用工具导入。
补充命令:
查看docker日志命令
docker logs 对应的容器名称或者是容器id
docker-compose 对应的容器名称或者是容器id
- 停止之前运行的tomcat和jar包的容器,重新启动,完成部署。
访问页面
http://192.168.2.222:8080/labms(前面的ip是服务器ip)
能正常到系统的登录页说明部署成功。