思路:在centos上部署docker,并在docker容器中部署tomcat、jdk、webapp、mysql、python,外部通过访问centos服务器访问tomcat服务
一、安装docker
1、linux环境(需要7.0以上,我的是8.2)
cat /etc/redhat-release
2、卸载旧版本docker
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
3、安装必须软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
4、设置仓库(我用的清华源)
yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
5、安装Docker Engine-Community,需要接受GPG密钥
yum install docker-ce docker-ce-cli containerd.io
6、启动docker
systemctl start docker
7、查看docker状态,active (running) active(running)为运行状态
systemctl status docker
二、制作镜像
1、可以查看已有的镜像,并显示说明全部信息
docker search tomcat --no-trunc
2、因为不清楚镜像实际情况,我这里还有各种版本要求,所有我这里用了官方纯净centos镜像,自己制作
docker pull centos
3、下载好了,查看下载的镜像信息
docker images
4、启动容器,映射端口并带有systemctl权限 ,容器名可以自己指定
docker run -p 8080:8080 -tid --name 容器名 --privileged=true 镜像名 /sbin/init
5、查看运行容器信息
docker ps -a
6、tomcat、jdk、mysql、python自己去官网下载,并拷贝到容器中,我这里是tomcat9和jdk1.8,是tar.gz的压缩包,mysql 是tar,python 是tgz压缩包
docker cp jdk路径 容器名:目标路径
docker cp tomcat路径 容器名:目标路径
docker cp mysql路径 容器名:目标路径
docker cp python路径 容器名:目标路径
7、进入docker容器
docker exec -it 容器名 /bin/bash
9、正常安装配置,基本和centos安装相同,需要注意的是mysql大小写敏感问题
缺少包:
yum install compat-openssl10 -y
yum install libncurses* -y
yum install net-tools -y
yum install numactl -y
yum install libaio -y
yum install perl -y
yum install perl-JSON -y
设置mysql大小写不敏感,及编码格式
rm -rf /var/lib/mysql
vi /etc/my.cnf
[mysqld]
lower_case_table_names=1
character-set-server = utf8
collation-server = utf8_general_ci
[client]
default-character-set = utf8
三、配置docker启动后自动运行python和tomcat程序
1、拷贝工程war包到tomcat
docker cp war包路径 容器名:tomcat的webapps路径
2、制作开机运行脚本 run.sh,包括启动redis、python、tomcat
#!/bin/bash
export JAVA_HOME=/home/jdk1.8.0_311
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:
nohup /home/redis-4.0.6/src/redis-server &
nohup /usr/local/python/bin/python3 /home/lac.py &
/home/apache-tomcat-9.0.56/bin/catalina.sh run
3、将当前容器生成镜像
docker commit 容器名称 新镜像名称
4、运行镜像,生成容器,映射docker中8080端口到centos的8080端口
docker run -p 8080:8080 -tid --name 容器名称 --privileged=true 已生成镜像名称 /usr/sbin/init
5、后台运行容器并执行run.sh
docker exec -itd tomcat /home/run.sh
6、上个步骤执行一次就好,如果之后再进入容器的话,可以使用
docker exec -it tomcat /bin/bash
7、在任意可以访问centos服务器的浏览器,访问tomcat服务,比如:http://192.168.0.1:8080/
8、成功