当前位置: 首页 > news >正文

【docker实战】安装tomcat并连接mysql数据库

本节用docker来安装tomcat,并用这个tomcat连接我们上一节安装好的mysql数据库

一、拉取镜像

我们安装8.5.69版本
先搜索一下

[root@localhost ~]# docker search tomcat
NAME                                  DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
tomcat                                Apache Tomcat is an open source implementati…   3619      [OK]       
tomee                                 Apache TomEE is an all-Apache Java EE certif…   113       [OK]       
bitnami/tomcat                        Bitnami Tomcat Docker Image                      51                   [OK]
bitnamicharts/tomcat                                                                   0     

但是没有看到我们需要的版本,怎么查看版本列表呢
参考这里
我们用下面的版本号

[root@localhost data]# docker pull tomcat:8.5.69

二、运行tomcat

bitnami的tomcat的根目录在/opt/bitnami/tomcat/webapps下面,所以我们为了方便部署我们的war包到tomcat中,最好将这个文件挂载到宿主机上

#先在宿主机上把挂载目录建好
[root@localhost data]# mkdir -p /opt/bitnami/tomcat/webapps
[root@localhost data]# chmod 777 /opt/bitnami/tomcat/webapps

运行tomcat容器

docker run -d \
-p 80:8080 \
--name tomcat \
--restart=always \
-e TOMCAT_USERNAME=myuser123 \
-e TOMCAT_PASSWORD=123456\
-v /opt/bitnami/tomcat/webapps:/opt/bitnami/tomcat/webapps \
tomcat:8.5.69

运行好后,通过宿主机的80端口访问一下
在这里插入图片描述
能正确访问了
如果需要部署我们的项目到tomcat中,只需要把我们的war包放到宿主机的/opt/bitnami/tomcat/webapps目录下就行了。

三、重要的环境变量

TOMCAT_SHUTDOWN_PORT_NUMBER:Apache TOMCAT关闭端口。默认值:8005
TOMCAT_HTTP_PORT_NUMBER:Apache TOMCAT HTTP端口。默认值:8080
TOMCAT_AJP_PORT_NUMBER:Apache TOMCAT AJP端口。默认值:8009
TOMCAT_USERNAME:Apache TOMCAT用户。默认值:manager
TOMCAT_PASSWORD:Apache TOMCAT密码。没有默认值。
TOMCAT_ALLOW_REMOTE_MANAGEMENT:是否允许从远程地址连接到Apache TOMCAT管理器应用程序。默认值:否
TOMCAT_ENABLE_AUTH:是否为Apache TOMCAT管理器应用程序启用身份验证。默认值:是
TOMCAT_ENABLE_AJP:是否启用Apache TOMCAT AJP连接器。默认值:否
TOMCAT_EXTRA_JAVA_OPTS:Apache TOMCAT的其他JAVA设置。没有默认值。
TOMCAT_INSTALL_DEFAULT_WEBAPPS:是否添加默认的Web应用程序(ROOT、管理器、主机管理器等)进行部署。默认值:是

tomcat和mysql一起,部署我们的应用

先创建一个网络

docker network create app-tier --driver bridge

启动mysql,用上面我们创建的网络

docker run -d \-p 3306:3306 \--name mysql57 \--restart=always \--network app-tier \-e ALLOW_EMPTY_PASSWORD=yes \-e MYSQL_ROOT_PASSWORD=123456 \-e MYSQL_CHARACTER_SET=utf8mb4 \-e MYSQL_COLLATION=utf8mb4_general_ci \-e MYSQL_ENABLE_SLOW_QUERY=1 \-e MYSQL_LONG_QUERY_TIME=5.0 \-e TZ=Asia/Shanghai \-v /bitnami/mysql57/data:/bitnami/mysql/data \-v /opt/bitnami/mysql/conf/my_custom.cnf:/opt/bitnami/mysql/conf/my_custom.cnf:ro \bitnami/mysql:5.7

启动tomcat加入这个网络,并且设置网络连接到mysql,即–link参数

docker run -d \
-p 80:8080 \
--name tomcat \
--restart=always \
--network app-tier \
--link mysql57:mysql57 \
-e TOMCAT_USERNAME=myuser123 \
-e TOMCAT_PASSWORD=3rjfasd \
-v /opt/bitnami/tomcat/webapps:/usr/local/tomcat/webapps \
tomcat:8.5.69

在tomcat应用启动的时候,我们的jdbc连接串,就可以写上mysql57:3306来连接mysql了,而不用担心ip的变化

docker-compose安装

docker-compose的安装命令如下,如果安装好了,请跳过此步骤

# intel x86_64
sudo curl -SL https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 \-o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
#安装完后,查看一下版本号,验证一下安装结果
docker-compose version

这个链接是从github上下载,你知道国内的镜像加速链接吗?
目前get.daocloud.io这个站已经没法用了。还有其它链接吗,没有找到。
一个可以快速一点的方法
用下载工具,如迅雷,通过上面的那个github链接下载,可以快点。然后将文件拷到/usr/local/bin目录下
在这里插入图片描述

记得将docker-compose-linux-x86_64重命名为docker-compose

用docker-compose发布我们的应用

接下来就要写yml配置文件了,将上面的docker命令翻译成yml如下

version: '2'
networks:app-tier:driver: bridge
services:mysql57:container_name: mysql57image: 'bitnami/mysql:5.7'restart: alwaysenvironment:ALLOW_EMPTY_PASSWORD: yesMYSQL_ROOT_PASSWORD: 123456MYSQL_CHARACTER_SET: utf8mb4MYSQL_COLLATION: utf8mb4_general_ciMYSQL_ENABLE_SLOW_QUERY: 1MYSQL_LONG_QUERY_TIME: 5.0TZ: Asia/Shanghainetworks:- app-tierports:- 3306:3306volumes:- /bitnami/mysql57/data:/bitnami/mysql/data- /opt/bitnami/mysql/conf/my_custom.cnf:/opt/bitnami/mysql/conf/my_custom.cnf:rotomcat:container_name: tomcatimage: 'tomcat:8.5.69'restart: alwaysports:- 80:8080environment:TOMCAT_USERNAME: myuser123TOMCAT_PASSWORD: 123456DB_HOST: mysql57links:- mysql57networks:- app-tiervolumes:- /opt/bitnami/tomcat/webapps:/usr/local/tomcat/webappsdepends_on:- mysql57

此文件命名为myapp.yml
接着我们执行一下docker-compose,将我们的应用启动起来

docker-compose -f myapp.yml up

如果要停止程序,则用下面的命令

docker-compose -f myapp.yml down

思考:如何开启MySQL备份?

参考文档: https://www.cnblogs.com/hgmyz/p/12351734.html
创建一个备份目录,此目录其实也在宿主机的挂载/bitnami/mysql57/data上。

mkdir /bitnami/mysql/data/backup
chmod 777 /bitnami/mysql/data/backup

进入容器执行以下命令

mysqldump -uroot -p123456 yourdbname > /bitnami/mysql/data/backup/yourdbname_$(date +%Y%m%d_%H%M%S).sql

将这个文件编辑保存在/bitnami/mysql/data/backup/mybackup.sh文件中
手动执行一下 mysqlbackup.sh,就可以保存SQL文件了
mybackup.sh文件如下

[root@localhost backup]# cat mybackup.sh 
mysqldump -uroot -p123456 yourdbname > /bitnami/mysql/data/backup/yourdbname_$(date +%Y%m%d_%H%M%S).sql
chmod 777 /bitnami/mysql/data/backup/mybackup.sh

那如何每天开启备份呢?
由于在容器内部没有安装crontab工具,所以我们可以在宿主机上的crontab来执行我们的定时备份脚本。
在宿主机执行容器中的脚本是这样的
下面表示执行容器中的脚本/bitnami/mysql/data/backup/mybackup.sh

docker exec -d mysql57 /bin/bash /bitnami/mysql/data/backup/mybackup.sh

在宿主机上生成一个dockerback.sh文件,

cd /bitnami/mysql57/data/backupdockerback.sh
docker exec -d mysql57 /bin/bash /bitnami/mysql/data/backup/mybackup.sh

命令文件查看一下

[root@localhost backup]#  cat dockerback.sh
docker exec -d mysql57 /bin/bash /bitnami/mysql/data/backup/mybackup.sh

并设置好权限

 chmod u+x /bitnami/mysql57/data/backup/dockerback.sh

定时任务定义

 crontab -e ##输入以下的内容*/1 * * * * /bitnami/mysql57/data/backup/dockerback.sh

可以看到,每分钟生成了一个数据库sql脚本
在这里插入图片描述
更优的备份脚本,其实是每天备份一个,并压缩一下保存,同时把上一天的删除,脚本如下。

dockerback.sh优化后的脚本如下

# 删除旧数据库
rm -f yourdb_*.sql
# 删除旧的压缩包文件
rm -f yourdb_*.tar.gz
# 备份新脚本
docker exec -d mysql57 /bin/bash /bitnami/mysql/data/backup/mybackup.sh
#休眠30s
sleep 30s
# 复制到新的目录
rm -rf /bitnami/mysql/data/backup/packages && mkdir /bitnami/mysql/data/backup/packages && mv yourdb_*.sql /bitnami/mysql/data/backup/packages
# 用新的SQL文件生成新的压缩包
tar -zcvf ./yourdb_$(date +%Y%m%d_%H%M%S).tar.gz /bitnami/mysql/data/backup/packages
#删除packages目录
rm -rf /bitnami/mysql/data/backup/packages

参考链接:

官网
github
加速的gitcode

关于安装的说明,可以看官方原说明文档

http://www.lryc.cn/news/272979.html

相关文章:

  • LeetCode 每日一题 Day 32 ||递归单调栈
  • 【mars3d】FixedRoute的circle没有跟polyline贴着模型的解决方案
  • Day7 vitest 之 vitest配置第三版
  • git补充上次提交
  • 计算机网络名词解释
  • flink table view datastream互转
  • redis重启后数据丢失问题解决(亲测好用)
  • 敬请期待……
  • 3.10 Android eBPF HelloWorld调试(四)
  • PyTorch常用工具(1)数据处理
  • docker-简单说说cgroup
  • 印象笔记04: 如何将印象笔记超级会员价值最大化利用?
  • 我的JDK动态代理流程
  • uniapp Vue3 面包屑导航 带动态样式
  • openGauss学习笔记-174 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作
  • 数据分析可被划分为4个重要的类别
  • 爆火小游戏敲木鱼流量主小程序源码系统+完整的代码包以及安装搭建教程
  • Invoke和BeginInvoke的区别
  • 3 分钟为英语学习神器 Anki 部署一个专属同步服务器
  • <HarmonyOS第一课>应用程序框架
  • SQL 解析 — 如何轻松实现新增语句
  • Android集成OpenSSL实现加解密-集成
  • 代码随想录算法训练营Day18|513.找树左下角的值、112. 路径总和、113. 路径总和ii、106.从中序与后序遍历序列构造二叉树
  • 【蓝桥备赛】技能升级——二分查找
  • zyqn-arm软中断设置
  • k8s---pod基础下
  • 玩转朋友圈!这样运营朋友圈吸睛又吸金!
  • react学习
  • vue-cli项目中vue.config.js的配置
  • Github 2024-01-04 开源项目日报 Top10