本节用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: mysql57

image: 'bitnami/mysql:5.7'

restart: always

environment:

ALLOW_EMPTY_PASSWORD: yes

MYSQL_ROOT_PASSWORD: 123456

MYSQL_CHARACTER_SET: utf8mb4

MYSQL_COLLATION: utf8mb4_general_ci

MYSQL_ENABLE_SLOW_QUERY: 1

MYSQL_LONG_QUERY_TIME: 5.0

TZ: Asia/Shanghai

networks:

- app-tier

ports:

- 3306:3306

volumes:

- /bitnami/mysql57/data:/bitnami/mysql/data

- /opt/bitnami/mysql/conf/my_custom.cnf:/opt/bitnami/mysql/conf/my_custom.cnf:ro

tomcat:

container_name: tomcat

image: 'tomcat:8.5.69'

restart: always

ports:

- 80:8080

environment:

TOMCAT_USERNAME: myuser123

TOMCAT_PASSWORD: 123456

DB_HOST: mysql57

links:

- mysql57

networks:

- app-tier

volumes:

- /opt/bitnami/tomcat/webapps:/usr/local/tomcat/webapps

depends_on:

- mysql57

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

docker-compose -f myapp.yml up

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

docker-compose -f myapp.yml down

tomcat 时区不对的问题

部署好应用后,发现程序中的时间和北京时间相差8小时,如何解决?

进入docker tomcat容器

docker exec -it tomcat /bin/bash

在容器中执行

echo "Asia/Shanghai" > /etc/timezone

查看修改情况

cat /etc/timezone

退出容器

exit

重启tomcat

docker restart tomcat

思考:如何开启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/backup

dockerback.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优化后的脚本如下

#! /bin/bash

sudo /usr/bin/rm -f /bitnami/mysql/data/backup/xxxx_*.sql && \

sudo /usr/bin/rm -f /bitnami/mysql/data/backup/xxxx_*.tar.gz && \

sudo /usr/bin/docker exec -d mysql57 /bin/bash /bitnami/mysql/data/backup/mybackup.sh && \

sudo /usr/bin/sleep 60s && \

sudo /usr/bin/rm -rf /bitnami/mysql/data/backup/packages && \

sudo /usr/bin/mkdir /bitnami/mysql/data/backup/packages && \

sudo /usr/bin/mv /bitnami/mysql/data/backup/xxxx_*.sql /bitnami/mysql/data/backup/packages && \

sudo /usr/bin/tar -zcvf /bitnami/mysql/data/backup/xxxx_$(date +%Y%m%d_%H%M%S).tar.gz /bitnami/mysql/data/backup/packages && \

sudo /usr/bin/rm -rf /bitnami/mysql/data/backup/packages

参考链接:

官网 github 加速的gitcode

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

推荐阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。