docker快速部署本地项目到服务器(tomcat8+mysql8)
目标是:将本地运行的spring项目,部署到服务器上
为什么使用docker?
- 环境隔离 服务器上,各种环境交杂,使用docker,能清楚的把各个项目进行隔离,不单维护的人员方便,也会省去很多维护这些项目交杂的时间。
- 真的是太轻量 每个docker是构建于一层一层的结构之上的,变化的只是这一层一层的变化的部分,docker的大小也非常之小
- 下载方便,想要获得一个镜像,只要pull一下就好了,和git的使用差不多哦
部署前提:
mysql文件,mysql关联文件,war包,传到服务器上,我传入的地址为/var/supplychain/ 别问我为什么要传到这里,我领导让的。
我的部署流程
docker mysql部署
- 建立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
- 刷入表数据
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
- 对表用户进行授权
对于mysql5来说:
grant all privileges on julonglian.* to 'why'@'%' identified by '123456';
flush privileges;
对于mysql8来说:
创建账户:create user 'why'@'%' identified by '123456';
赋予权限:grant all on *.* to 'why'@'%' with grant option;(修改权限时在后面加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
为解决的事是:不知道为什么server.xml 挂载不上去,只要挂载这个,就启动不了,看来只能拷贝了
为什么要改这个呢?有时候,需要项目的上下文根路径修改为/,所以就需要动这个配置文件
tomcat8是在这个文件中,加入
server.xml :修改上下文根路径
拷贝过去:
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/
代码中需要变动的地方
- 数据库url地址修改为docker内网ip地址访问地址,比如:使用docker inspect mysql的docker内网ip,进行查看其ip
- 数据库驱动的版本要对应上,比如:本地跑的时候使用的是mysql5,驱动啊,url等要进行变更。
- mybatis的一些数据库url配置也需要相应修改(我这里没有)
参考
Docker实现运行tomcat并部署项目war包,并实现挂载目录
Docker部署MySql应用
docker中mysql数据库的数据导入和导出
linux命令行打包、压缩及解压缩
通过容器提交镜像(docker commit)以及推送镜像(docker push)
进一步的呢:如果本地直接打包成一个镜像push到库中,在远程pull下来就又会快很多,这就又是另一篇文章了
docker快速部署本地项目到服务器(tomcat8+mysql8)的更多相关文章
- Docker 快速部署 Django项目到云服务器
项目结构: 1,dockerfile FROM python:3.7 RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY pip.conf /roo ...
- 私活利器,docker快速部署node.js应用
http://cnodejs.org/topic/53f494d9bbdaa79d519c9a4a 最近研究了几天docker的快速部署,感觉很有新意,非常轻量级和方便,打算在公司推广一下,解放运维, ...
- docker中部署django项目~~Dockfile方式和compose方式
1. 背景: 本机win10上,后端django框架代码与前端vue框架代码联调通过. 2. 目的: 在centos7系统服务器上使用docker容器部署该项目. 3. 方案一:仅使用基 ...
- 使用Docker快速部署ELK分析Nginx日志实践
原文:使用Docker快速部署ELK分析Nginx日志实践 一.背景 笔者所在项目组的项目由多个子项目所组成,每一个子项目都存在一定的日志,有时候想排查一些问题,需要到各个地方去查看,极为不方便,此前 ...
- docker自动化部署前端项目实战一
docker自动化部署前端项目实战一 本文适用于个人项目,如博客.静态文档,不涉及后台数据交互,以部署文档为例. 思路 利用服务器node脚本,监听github仓库webhook push事件触发po ...
- 使用Docker快速部署各类服务
使用Docker快速部署各类服务 一键安装Docker #Centos环境 wget -O- https://gitee.com/iubest/dinstall/raw/master/install. ...
- spring boot / cloud (十八) 使用docker快速搭建本地环境
spring boot / cloud (十八) 使用docker快速搭建本地环境 在平时的开发中工作中,环境的搭建其实一直都是一个很麻烦的事情 特别是现在,系统越来越复杂,所需要连接的一些中间件也越 ...
- 使用Docker快速部署ELK分析Nginx日志实践(二)
Kibana汉化使用中文界面实践 一.背景 笔者在上一篇文章使用Docker快速部署ELK分析Nginx日志实践当中有提到如何快速搭建ELK分析Nginx日志,但是这只是第一步,后面还有很多仪表盘需要 ...
- 使用Cloud Toolkit部署SpringBoot项目到服务器
由于我们经常发布项目到测试服,在测试服上调试一些本地无法调试的东西,所以出现了各种打包,然后上传.启动,时间都耗费在这无聊的事情上面了,偶然在网上看到IntelliJ IDEA有 Cloud Tool ...
随机推荐
- 2019年12月1日Linux开发手记
配置ubuntu摄像头: 1.设置→添加→usb控制器→兼容usb3.0 2.虚拟机→可移动设备→web camera→连接(断开主机) 3.查看是否配置成功,打开终端,输入: susb ls /de ...
- Theano中的导数
计算梯度 现在让我们使用Theano来完成一个稍微复杂的任务:创建一个函数,该函数计算相对于其参数x的某个表达式y的导数.为此,我们将使用宏T.grad.例如,我们可以计算相对于的梯度 import ...
- 【Android - IPC】之Messenger简介
参考资料: 1.<Android开发艺术探索>第二章2.4.3 2.[Messenger完全解析] 1.Messenger概述 Messenger,译为“信使”,是Android中一种基于 ...
- 远程连接mysql出现1045错误的解决办法
第一步:停止MySQL服务 第二步:在你MySQL的安装目录下找到my.ini,文件,打开文件查找到 [mysqld] ,在其下方添加上一行 skip-grant-tables,然后保存. 第三步:启 ...
- 月下无限连?拒绝无休止switch!
拒绝无休止switch 一.前言 前天碰到个需求,其实很简单,就是Excel导入,Excel模板长下面这样: 按我平常的逻辑是这样做的: 用文件输入流读取Excel,根据Excel的版本生成不同的对象 ...
- 最小生成树与最短路径--C语言实现
接昨天,在这里给出图的其中一种应用:最小生成树算法(Prime算法和Kruskal算法).两种算法的区别就是:Prime算法以顶点为主线,适合用于顶点少,边密集的图结构:Kruskal算法以边为主线, ...
- DS1302时钟芯片驱动程序
/***************************************************************************** FileName : DS1302.c F ...
- 记录我的 python 学习历程-Day03 列表/元组/rang
一.列表初识 列表是 Python 的基础数据类型之一,它是以''[ ]''的形式括起来的,每个元素用","隔开,属于容器型数据类型,他可以存放大量的.各种类型的数据. 基本格式 ...
- mac 开关机
last | grep reboot (查看开机时间记录) last | grep shutdown (查看关机时间记录)
- tensorflow SavedModelBuilder用法
训练代码: # coding: utf-8 from __future__ import print_function from __future__ import division import t ...