目标是:将本地运行的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 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

  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下来就又会快很多,这就又是另一篇文章了

docker快速部署本地项目到服务器(tomcat8+mysql8)的更多相关文章

  1. Docker 快速部署 Django项目到云服务器

    项目结构: 1,dockerfile FROM python:3.7 RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY pip.conf /roo ...

  2. 私活利器,docker快速部署node.js应用

    http://cnodejs.org/topic/53f494d9bbdaa79d519c9a4a 最近研究了几天docker的快速部署,感觉很有新意,非常轻量级和方便,打算在公司推广一下,解放运维, ...

  3. docker中部署django项目~~Dockfile方式和compose方式

    1.  背景:   本机win10上,后端django框架代码与前端vue框架代码联调通过. 2.  目的:   在centos7系统服务器上使用docker容器部署该项目. 3.  方案一:仅使用基 ...

  4. 使用Docker快速部署ELK分析Nginx日志实践

    原文:使用Docker快速部署ELK分析Nginx日志实践 一.背景 笔者所在项目组的项目由多个子项目所组成,每一个子项目都存在一定的日志,有时候想排查一些问题,需要到各个地方去查看,极为不方便,此前 ...

  5. docker自动化部署前端项目实战一

    docker自动化部署前端项目实战一 本文适用于个人项目,如博客.静态文档,不涉及后台数据交互,以部署文档为例. 思路 利用服务器node脚本,监听github仓库webhook push事件触发po ...

  6. 使用Docker快速部署各类服务

    使用Docker快速部署各类服务 一键安装Docker #Centos环境 wget -O- https://gitee.com/iubest/dinstall/raw/master/install. ...

  7. spring boot / cloud (十八) 使用docker快速搭建本地环境

    spring boot / cloud (十八) 使用docker快速搭建本地环境 在平时的开发中工作中,环境的搭建其实一直都是一个很麻烦的事情 特别是现在,系统越来越复杂,所需要连接的一些中间件也越 ...

  8. 使用Docker快速部署ELK分析Nginx日志实践(二)

    Kibana汉化使用中文界面实践 一.背景 笔者在上一篇文章使用Docker快速部署ELK分析Nginx日志实践当中有提到如何快速搭建ELK分析Nginx日志,但是这只是第一步,后面还有很多仪表盘需要 ...

  9. 使用Cloud Toolkit部署SpringBoot项目到服务器

    由于我们经常发布项目到测试服,在测试服上调试一些本地无法调试的东西,所以出现了各种打包,然后上传.启动,时间都耗费在这无聊的事情上面了,偶然在网上看到IntelliJ IDEA有 Cloud Tool ...

随机推荐

  1. 2019年12月1日Linux开发手记

    配置ubuntu摄像头: 1.设置→添加→usb控制器→兼容usb3.0 2.虚拟机→可移动设备→web camera→连接(断开主机) 3.查看是否配置成功,打开终端,输入: susb ls /de ...

  2. Theano中的导数

    计算梯度 现在让我们使用Theano来完成一个稍微复杂的任务:创建一个函数,该函数计算相对于其参数x的某个表达式y的导数.为此,我们将使用宏T.grad.例如,我们可以计算相对于的梯度 import ...

  3. 【Android - IPC】之Messenger简介

    参考资料: 1.<Android开发艺术探索>第二章2.4.3 2.[Messenger完全解析] 1.Messenger概述 Messenger,译为“信使”,是Android中一种基于 ...

  4. 远程连接mysql出现1045错误的解决办法

    第一步:停止MySQL服务 第二步:在你MySQL的安装目录下找到my.ini,文件,打开文件查找到 [mysqld] ,在其下方添加上一行 skip-grant-tables,然后保存. 第三步:启 ...

  5. 月下无限连?拒绝无休止switch!

    拒绝无休止switch 一.前言 前天碰到个需求,其实很简单,就是Excel导入,Excel模板长下面这样: 按我平常的逻辑是这样做的: 用文件输入流读取Excel,根据Excel的版本生成不同的对象 ...

  6. 最小生成树与最短路径--C语言实现

    接昨天,在这里给出图的其中一种应用:最小生成树算法(Prime算法和Kruskal算法).两种算法的区别就是:Prime算法以顶点为主线,适合用于顶点少,边密集的图结构:Kruskal算法以边为主线, ...

  7. DS1302时钟芯片驱动程序

    /***************************************************************************** FileName : DS1302.c F ...

  8. 记录我的 python 学习历程-Day03 列表/元组/rang

    一.列表初识 列表是 Python 的基础数据类型之一,它是以''[ ]''的形式括起来的,每个元素用","隔开,属于容器型数据类型,他可以存放大量的.各种类型的数据. 基本格式 ...

  9. mac 开关机

    last | grep reboot (查看开机时间记录) last | grep shutdown (查看关机时间记录)

  10. tensorflow SavedModelBuilder用法

    训练代码: # coding: utf-8 from __future__ import print_function from __future__ import division import t ...