web项目部署之Tomcat容器+MySql容器

写在前面

这学期上了《软件过程管理》课,课程要求是做一个商城系统,并且要使用相应的项目管理工具。经过小组同学的努力,最终项目已经在本地写好了,需要部署到老师给的服务器上。然后部署的活儿就交给我啦。

第一想法:下一个tomcat,设置端口8081,再下一个mysql,设置端口3307。(因为有其它同学也在用这个服务器,所以端口号得改一下)

然而!!毕竟刚学了docker,所以决定,用tomcat容器和mysql容器来做这件事

第一步:下载并启动容器

参考我自己写的博客:https://blog.csdn.net/qq_37054755/article/details/117410591?spm=1001.2014.3001.5501进行下面的步骤:

1、docker pull mysql:5.7下载5.7版本的docker镜像

2、docker run -p 3307:3306 --name mysql -v /root/group26/mydocker/mysql/conf:/etc/mysql/conf.d -v /root/group26/mydocker/mysql/logs:/logs -v /root/group26/mydocker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7启动mysql容器

3、docker pull tomcat下载tomcat镜像

4、docker run -it -p 8081:8080 --name tomcat --link mysql:dbhost -v /root/group26/tomcat/webapps:/usr/local/tomcat/webapps tomcat启动tomcat容器

5、将war包放到对应的webapps目录下,这时记得修改jdbc的连接为这样:
String DB_URL = "jdbc:mysql://mysql:3306/tmsshopping?serverTimezone=UTC&useSSL=false&userUnicode=true&allowPublicKeyRetrieval=true";
因为我们mysql容器的名字就是mysql,所以地址我们写mysql:3306,注意不是mysql:3307哦,因为容器对应的端口是3306的。

第二步:解决数据库中文无法输入问题

点开网页一看,中文全部没有了,再检查一下数据库,发现所有应该是中文的地方都是空的,不知道是变成了空格还是怎样。

1、在网上找了一圈,发现是要修改配置文件为这样:

# dvice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.

[mysqld]

character-set-server=utf8


# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin

# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....


# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M 

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

[client]
default-character-set=utf8

其实就是在[mysqld]下面添加character-set-server=utf8,[client]下面添加default-character-set=utf8

【注意】这个配置文件要命名成my.cnf,并且要放在容器内的/etc文件夹下。

2、这个时候进入mysql容器,命令是docker exec -it mysql /bin/bash,然后进入mysql,输入命令查看字符集,show variables like '%char%'
在这里插入图片描述
发现其它的都是urf8,character_set_database为latin1。

使用ALTER DATABASE tmsshopping CHARACTER SET utf8

这样就全是utf8了。
在这里插入图片描述

3、然而!!还是不行!!最后又看到什么终端编码什么的,也就是,最好不要直接复制sql语句来建立数据库,而是source tmsshopping.sql命令来建库。

所以,把tmsshopping.sql文件放到mysql容器的/bin目录下,建库,最后终于成功!!

总结

docker是个好东西啊,不然的话还是配置tomcat的环境变量啊什么的。使用docker容器后,tomcat容器暴露8080端口(宿主机的8081),mysql暴露3306端口(宿主机的3307),然后将两个容器进行连接就可以了!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值