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命令返回了一条记录。