ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

docker快速部署本地项目到服务器(tomcat8+mysql8)

2019-08-14 15:01:33  阅读:285  来源: 互联网

标签:容器 supplychain mysql8 server mysql var docker tomcat8


目标是:将本地运行的spring项目,部署到服务器上

为什么使用docker?

  1. 环境隔离 服务器上,各种环境交杂,使用docker,能清楚的把各个项目进行隔离,不单维护的人员方便,也会省去很多维护这些项目交杂的时间。
  2. 真的是太轻量 每个docker是构建于一层一层的结构之上的,变化的只是这一层一层的变化的部分,docker的大小也非常之小
  3. 下载方便,想要获得一个镜像,只要pull一下就好了,和git的使用差不多哦

部署前提:

mysql文件,mysql关联文件,war包,传到服务器上,我传入的地址为/var/supplychain/ 别问我为什么要传到这里,我领导让的。

我的部署流程

docker mysql部署

  1. 建立docker 数据库:
docker run -di --name scf_mysql -p 33306:3306 \
-v /var/supplychain/image:/var/supplychain/image -e MYSQL_ROOT_PASSWORD=123456 mysql  \
--lower_case_table_names=1 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

参数说明:
-d
后台执行
-i
开控制台交互
--name
为这个开启的容器,命名
-p
进行端口映射,将宿主机的33306端口映射到容器的3306
-v
挂载宿主机/var/supplychain/image/这个目录到容器的/var/supplychain/image/目录
-e
指定容器的环境变量,这里是指定的mysql容器中mysql的密码为123456
--lower_case_table_names=1
忽略数据表名的大小写,这是个深坑哦,踩了2天
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
设置中文编码格式为utf8

  1. 刷入表数据
docker cp /var/supplychain/j.sql     容器ID:/         #将j.sql拷贝到容器的根目录下
docker exec -it scf_mysql /bin/bash/                    #进入容器的交互环境
mysql -uroot -p                                                     #进入mysql
create database julonglian;
use julonglian;
source /j.sql
  1. 对表用户进行授权
    对于mysql5来说:
grant all privileges on julonglian.* to 'why'@'%' identified by '123456';
flush privileges;

对于mysql8来说:

创建账户:create user ‘why’@’%’ identified by ‘123456’;
赋予权限:grant 权限列表 on 数据库 to ‘用户名’@’访问主机’ ;(修改权限时在后面加with grant option)
flush privileges;

docker tomcat部署

docker run -d -p 7608:8080 --name supplychain -v /var/supplychain/image:/var/supplychain/image -v /var/supplychain/server.xml:/usr/local/tomcat/conf/server.xml tomcat

  1. 为解决的事是:不知道为什么server.xml 挂载不上去,只要挂载这个,就启动不了,看来只能拷贝了
    为什么要改这个呢?有时候,需要项目的上下文根路径修改为/,所以就需要动这个配置文件
    tomcat8是在这个文件中,加入
    server.xml :

  2. 修改上下文根路径
    拷贝过去:
sudo docker cp /var/supplychain/server.xml 容器ID:/usr/local/tomcat/conf/server.xml   不同版本可能server.xml放的位置不一样,具体去容器里面看看

进入容器
cd webapps/ROOT/
rm -rf *
cd ..
mv 项目war包和解压的文件 ROOT/

代码中需要变动的地方

  1. 数据库url地址修改为docker内网ip地址访问地址,比如:使用docker inspect mysql的docker内网ip,进行查看其ip
  2. 数据库驱动的版本要对应上,比如:本地跑的时候使用的是mysql5,驱动啊,url等要进行变更。
  3. mybatis的一些数据库url配置也需要相应修改(我这里没有)

参考

Docker实现运行tomcat并部署项目war包,并实现挂载目录
Docker部署MySql应用
docker中mysql数据库的数据导入和导出
linux命令行打包、压缩及解压缩
通过容器提交镜像(docker commit)以及推送镜像(docker push)

进一步的呢:如果本地直接打包成一个镜像push到库中,在远程pull下来就又会快很多,这就又是另一篇文章了

标签:容器,supplychain,mysql8,server,mysql,var,docker,tomcat8
来源: https://www.cnblogs.com/whyaza/p/11351666.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有