【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.hqwc.cn/news/316157.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3-32-路由-重定向路由

什么是重定向 路由的重定向 :将匹配到的路由 【替换】 为另一个路由。 redirect : 重定向的关键字。 重定向的特点 1、重定向是路由的直接替换,路由的地址是直接改变的; 2、在没有子路由配置的情况下,重定向的路由可以省略 component 属性的配…

WebStorm 创建一个Vue项目(1)

一、下载并安装WebStorm 步骤一 步骤二 选择激活方式 激活码: I2A0QUY8VU-eyJsaWNlbnNlSWQiOiJJMkEwUVVZOFZVIiwibGljZW5zZWVOYW1lIjoiVU5JVkVSU0lEQURFIEVTVEFEVUFMIERFIENBTVBJTkFTIiwiYXNzaWduZWVOYW1lIjoiVGFvYmFv77yaSkVU5YWo5a625qG25rAIOa0uW3peS9nOWup…

mybatis-flex笔记

MyBatis-Flex 的增删改功能 - MyBatis-Flex 官方网站https://mybatis-flex.com/zh/base/add-delete-update.html 代码https://gitee.com/hntianshu/mybatis-flex-test 一 新增数据 不忽略 null 值。 就是允许有null 忽略null 就是不允许有null BaseMapper 的接口提供了 inser…

Redis7.2.3(Windows版本)

1、解压   2、设置密码 (1) 右击编辑redis.conf文件:  (2) 设置密码。  3、测试密码是否添加成功  如上图所示,即为成功。 4、设置…

案例086:基于微信小程序的影院选座系统

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

使用echarts的bmap配置项绘制区域轮廓遮罩

示例图 代码 <template><div id"map" style"width: 100%; height: 100vh"></div> </template><script> import * as echarts from "echarts"; import "echarts/extension/bmap/bmap"; export default…

音视频技术开发周刊 | 326

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 全球最强「开源版Gemini」诞生&#xff01;全能多模态模型Emu2登热榜&#xff0c;多项任务刷新SOTA 最强的全能多模态模型来了&#xff01;就在近日&#xff0c;智源研究院…

html引入react以及hook的使用

html引入react 效果代码注意 效果 分享react demo片段的时候&#xff0c;如果是整个工程项目就有点太麻烦了&#xff0c;打开速度慢&#xff0c;文件多且没必要&#xff0c;这个时候用html就很方便。 在html中能正常使用useState 和 useEffect 等hook。 代码 <!DOCTYPE htm…

k8s的声明式资源管理(yaml文件)

1、声明式管理的特点 &#xff08;1&#xff09;适合对资源的修改操作 &#xff08;2&#xff09;声明式管理依赖于yaml文件&#xff0c;所有的内容都在yaml文件当中 &#xff08;3&#xff09;编辑好的yaml文件&#xff0c;还是要依靠陈述式的命令发布到k8s集群当中 kubect…

2024年最新版 Ubuntu 20+ 上安装 Docker

2024年最新版 Ubuntu 20 上安装 Docker 一、前言 在网上搜了一些安装docker的方法&#xff0c;怎么说感觉良莠不齐&#xff0c;参考GPT整理一下来自GPT4这边的安装docker的解决方法&#xff0c;实测能用》2024.1.2&#xff0c;大概耗时7分钟左右&#xff08;在没报错的情况下…

TinyEngine 服务端正式开源啦!!!

背景介绍 TinyEngine 低代码引擎介绍 随着企业对于低代码开发平台的需求日益增长&#xff0c;急需一个通用的解决方案来满足各种低代码平台的开发需求。正是在这种情况下&#xff0c;低代码引擎应运而生。它是一种通用的开发框架&#xff0c;通过对低代码平台系统常用的功能进…

白话机器学习的数学-3-评估

1、 模型评估 那我们如何测量预测函数 fθ(x)的正确性&#xff0c;也就是精度呢&#xff1f; 观察函数的图形&#xff0c;看它能否很好地拟合训练数据&#xff1a; 这是只有一个变量的简单问题&#xff0c;所以才能在图上展 示出来。 过像多重回归这样的问题&#xff0c;变量增…