Java开发中遇到过的坑(二)-使用docker进行SprngBoot项目部署

2 篇文章 0 订阅
2 篇文章 0 订阅

1、前言

2、环境准备 

  2.1 线上环境

  2.2  线下环境

3 、解决问题

   3.1  mysql执行命令

   3.2 mysql区分大小写修改

   3.3 SpringBoot容器化与mysql通信

   3.4 SpringBoot容器化文件上传

 

前言

现有一个前后端分离的项目,后台采用Spring Boot+maven多模块开发、前端使用Vue全家桶+ElmentUI。准备搭建线上docker环境,nginx、mysql都使用docker进行管理。

 

环境准备

线上环境

 

1、CentOS7上 需要安装docker。

安装教程:https://www.cnblogs.com/yufeng218/p/8370670.html

2、在docker中安装nginx,mysql。

安装教程参考菜鸟教程:

https://www.runoob.com/docker/docker-install-mysql.html

https://www.runoob.com/docker/docker-install-nginx.html

3、镜像仓库。用的阿里云免费的镜像服务。

https://help.aliyun.com/document_detail/60743.html?spm=a2c4g.11186623.6.547.7fe911bevrA4Cv

 

线下环境

安装docker进行打包,win10专业版中只需要安装docker 桌面程序就可以了,其他版本都需要安装win7的版本。我的电脑以前是win10专业版安装了docker进行打包,换了系统以后是家庭版,只能下载toolbbox。

DockerToolBox window下载使用 https://blog.csdn.net/qq_35568099/article/details/80359824

Docker Desktop下载使用 https://www.docker.com/products/docker-desktop

后台项目需要配置dockerfile,maven配置docker打包工具。

前端项目打包,打包成功打开index.html是可以访问的,如遇到错误需要查看打包的日志。服务器不需要其他外部配置,直接使用nginx配置访问即可。

 

解决问题

mysql执行命令

docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

$PWD是将主机当前目录下的,所以需要跳转到 cd /mysql 执行此命令

 

mysql区分大小写修改

默认是区分大小写,现在要改成不区分。进入mysql容器内部:docker exec -it mymysql bash

查看文件 find / -name my.cnf 我安装的版本没有这个文件,操作不了

另外的办法去修改 /etc/mysql/mysql.conf.d/mysqld.cnf

遇到 vim: command not found

apt-get update

apt-get install vim

有点慢,可能是内网的原因

如果需要将执行已有的sql脚本,需要cp命令拷贝进去再执行

vim /etc/mysql/mysql.conf.d/mysqld.cnf

在[mysqld]行加入:lower_case_table_names =1

在服务器中重启myql容器,docker restart mymysql

连上数据库,查看

show global variables like '%lower_case%';

 

SpringBoot容器化与mysql通信

后台打包部署后也是一个镜像,需要通过指定容器名建立关联,连接数据库的配置文件中用mymysql代替127.0.0.1。

docker run -it --name  程序名 --link mymysql:mymysql   -p 8081:8081 registry.cn-hangzhou.aliyuncs.com/XXXX

SpringBoot容器化文件上传

网上对于文件上传的处理操作很多,比如服务器搭建FTP服务器,也可以docker搭建一个文件服务器进行处理。现在这个项目比较小,就直接使用文件上传存储到服务器目录中。通过命令将本机的目录挂载到容器中作为文件存储路径,实现持久化保存。至于图片等可以直接访问需要自己配置nginx静态资源访问

docker run -it --name  程序名 --link mymysql:mymysql -v ~/upload:/root/upload -p 8081:8081 registry.cn-hangzhou.aliyuncs.com/XXXX

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值