docker部署tomcat+mysql服务

mysql服务

以sql文件clock_in.sql为例

当然也可以选择直接先起一个mysql容器,用数据库管理工具建。这边主要是为了自动部署。

  • clock_in.sql
/*
Navicat MySQL Data Transfer

Source Server         : spring
Source Server Version : 50717
Source Host           : localhost:3306
Source Database       : clock_in

Target Server Type    : MYSQL
Target Server Version : 50717
File Encoding         : 65001

Date: 2020-04-03 14:32:58
*/
create database `test` default character set utf8 collate utf8_general_ci;
use test;

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `email` varchar(30) COLLATE utf8_bin NOT NULL,
  `passwd` varchar(40) COLLATE utf8_bin NOT NULL,
  `is_admin` int(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'admin', 'admin', '1');
  • privileges.sql

修改mysql密码

use mysql;
select host, user from user;
-- 因为mysql版本是5.7,因此新建用户为如下命令:
create user test_user identified by 'test_passwd';
-- 将xgctf数据库的权限授权给创建的test_user用户,密码为test_passwd
grant all on test.* to test_user@'%' identified by 'test_passwd' with grant option;
-- 这一条命令一定要有:
 flush privileges;
  • setup.sh
#!/bin/bash
set -e
 
#查看mysql服务的状态,方便调试,这条语句可以删除
echo `service mysql status`
 
echo '1.启动mysql....'
#启动mysql
service mysql start
sleep 3
echo `service mysql status`
 

echo '2.开始导入数据....'
#导入数据
mysql < /mysql/clock_in.sql
echo '3.导入数据完毕....'
 
sleep 3
echo `service mysql status`
 
#重新设置mysql密码
echo '4.开始修改密码....'
mysql < /mysql/privileges.sql
echo '5.修改密码完毕....'
 
#sleep 3
echo `service mysql status`
echo `mysql容器启动完毕,且数据导入成功`
 
  • tail -f /dev/null

Dockerfile

FROM mysql:5.7.20
 
#设置免密登录
ENV MYSQL_ALLOW_EMPTY_PASSWORD yes
 
#将所需文件放到容器中
COPY setup.sh /mysql/setup.sh
COPY clock_in.sql /mysql/clock_in.sql
COPY privileges.sql /mysql/privileges.sql
#为/mysql/setup.sh添加执行权限
RUN chmod u+x /mysql/setup.sh
#设置容器启动时执行的命令
CMD ["sh", "/mysql/setup.sh"]
  • build镜像
docker build . -t mysql_test
  • 开启容器
docker run -d  --name=mysqlserver mysql_test

这边给容器名称为mysqlserver

tomcat服务

  • application.properties

配置数据库连接文件,例如:

spring.datasource.url=jdbc:mysql://mysqlserver:3306/test?serverTimezone=GMT%2B8
!--spring.datasource.url=jdbc:mysql://localhost:3306/mall
spring.datasource.username=test_user
spring.datasource.password=test_passwd
!--spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
server.port=8080
!--mapping对应的就是resources下面的mapping目录。
mybatis.mapper-locations=classpath:mapping/*.xml 
!--com.mall.entity是包目录。
mybatis.type-aliases-package=com.challenge.clockin.model
logging.level.com.mall.mapper=debug

!--连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=-1
!--连接池最大阻塞等待时间(使用负值表示没有限制)
!--spring.redis.jedis.pool.max-wait=-1
!--连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=8  
!-- # 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0  
!-- # 连接超时时间(毫秒)
!--spring.redis.timeout=

图片

主要注意修改数据库连接,将指定的ip地址改为mysql对应的容器名,在后面启动容器的时候进行对应。以及注意修改连接的用户名密码为前面mysql服务对应的。

打包好war包后

  • Dockerfile
FROM tomcat
MAINTAINER author <author@qq.com>
EXPOSE 8080
COPY test.war /usr/local/tomcat/webapps
ENTRYPOINT /root/startup.sh
  • 部署tomcat容器服务命令
docker run -d -p 1234:8080 --link mysqlserver:mysqlserver  test_server

图片

测试一下发现成功传入username和passwd,服务器端成功去执行了sql命令返回了一条记录。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值