爱站关键词,移动互联网开发的关注点,网站建设开发合同模板,沈阳奇搜建站本节用docker来安装tomcat#xff0c;并用这个tomcat连接我们上一节安装好的mysql数据库
一、拉取镜像
我们安装8.5.69版本 先搜索一下
[rootlocalhost ~]# docker search tomcat
NAME DESCRIPTION …本节用docker来安装tomcat并用这个tomcat连接我们上一节安装好的mysql数据库
一、拉取镜像
我们安装8.5.69版本 先搜索一下
[rootlocalhost ~]# 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 但是没有看到我们需要的版本怎么查看版本列表呢 参考这里 我们用下面的版本号
[rootlocalhost data]# docker pull tomcat:8.5.69二、运行tomcat
bitnami的tomcat的根目录在/opt/bitnami/tomcat/webapps下面所以我们为了方便部署我们的war包到tomcat中最好将这个文件挂载到宿主机上
#先在宿主机上把挂载目录建好
[rootlocalhost data]# mkdir -p /opt/bitnami/tomcat/webapps
[rootlocalhost data]# chmod 777 /opt/bitnami/tomcat/webapps运行tomcat容器
docker run -d \
-p 80:8080 \
--name tomcat \
--restartalways \
-e TOMCAT_USERNAMEmyuser123 \
-e TOMCAT_PASSWORD123456\
-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_USERNAMEApache TOMCAT用户。默认值manager
TOMCAT_PASSWORDApache TOMCAT密码。没有默认值。
TOMCAT_ALLOW_REMOTE_MANAGEMENT是否允许从远程地址连接到Apache TOMCAT管理器应用程序。默认值否
TOMCAT_ENABLE_AUTH是否为Apache TOMCAT管理器应用程序启用身份验证。默认值是
TOMCAT_ENABLE_AJP是否启用Apache TOMCAT AJP连接器。默认值否
TOMCAT_EXTRA_JAVA_OPTSApache 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 \--restartalways \--network app-tier \-e ALLOW_EMPTY_PASSWORDyes \-e MYSQL_ROOT_PASSWORD123456 \-e MYSQL_CHARACTER_SETutf8mb4 \-e MYSQL_COLLATIONutf8mb4_general_ci \-e MYSQL_ENABLE_SLOW_QUERY1 \-e MYSQL_LONG_QUERY_TIME5.0 \-e TZAsia/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 \
--restartalways \
--network app-tier \
--link mysql57:mysql57 \
-e TOMCAT_USERNAMEmyuser123 \
-e TOMCAT_PASSWORD3rjfasd \
-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.7restart: 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.69restart: 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文件如下
[rootlocalhost 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
命令文件查看一下
[rootlocalhost backup]# cat dockerback.sh
docker exec -d mysql57 /bin/bash /bitnami/mysql/data/backup/mybackup.sh并设置好权限 chmod ux /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
关于安装的说明可以看官方原说明文档