docker,docker-compose部署

    • 安装docker

Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

1.1 通过 uname -r 命令查看你当前的内核版本

1.2 更新yum包到最新:yum update

到最后选择“y”

等待安装成功

1.3 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

yum install -y yum-utils device-mapper-persistent-data lvm2

1.4 设置yum源,注意空格

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

1.5 可以查看所有仓库中所有docker版本,并选择特定版本安装

1.6 安装docker

yum install docker-ce-17.12.0.ce-1.el7.centos

执行之后,看到有选择的就选y

看到“完毕”字样代表已经安装好,

启动并加入开机启动

systemctl start docker

systemctl enable docker

验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

执行命令:docker version

    • 安装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

赋运行权限

chmod +x /usr/local/bin/docker-compose

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

查看版本

docker-compose version

安装完毕

    • 编写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是代表后台运行)

等待运行完毕,会报如下错误

是因为server.xml文件没有同步.

拿到labms项目中的server.xml文件放到opt/docker-tomcat/conf下

查看当前容器:

docker ps -a

可以看到当前容器已经存在

查看当前正在运行的容器

docker ps

在上图中STATUS一栏,如果都是显示以UP开头的则表示都正常运行了

我们可以看到第一个tomcat是正常运行的,确认端口8080是对外开放的情况下,用浏览器访问http://192.168.2.222:8080/(前面的ip是服务器的ip),正常情况下会出现tomcat界面

如果出现其他异常,则需要进一步排查。

在做这个文档之前出现了一点小问题,问题是webapps下面没有对应的文件

目前不知道为何用脚本运行之后没有这些文件,故采取补救方案,把对应的文件直接拷贝到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),容器名称在哪里看?下图红框部分是容器名称的地方

下图是执行进入mysql容器内部的命令,正常情况

进入之后执行命令,在Enter password需要输入提前知晓的数据库密码,正确的话就会出现下图所示。

创建数据库

命令: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)

能正常到系统的登录页说明部署成功。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值