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 ...
随机推荐
- Java多线程面试题:线程锁+线程池+线程同步等
1.并发编程三要素? 1)原子性 原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要么就全部都不执行. 2)可见性 可见性指多个线程操作一个共享变量时,其中一个线程对变量 ...
- 我的 Input框 不可能这么可爱
<input /> 标签是我们日常开发中非常常见的替换元素了,但是最近在刷 whattwg 跟 MDN 的时候发现 跟 <input /> 有很多相关的属性,选择器都没怎么用过 ...
- 【集合系列】- 深入浅出分析HashMap
一.摘要 在集合系列的第一章,咱们了解到,Map的实现类有HashMap.LinkedHashMap.TreeMap.IdentityHashMap.WeakHashMap.Hashtable.Pro ...
- MySQL分层和查询数据的流程
MySQL分层 MySQL分层 主要分为:连接层,服务层,引擎层,存储层 客户端执行一条select命令的流程如下 连接器 功能: 负责跟客户端建立连接.获取权限.维持和管理连接 细节: 1.当用户登 ...
- 理解Redis的单线程模式
0.概述 本文基于的Redis版本为4.0以下,在Redis更高版本中并不是完全的单线程了,增加了BIO线程,本文主要讲述主工作线程的单线程模式. 通过本文将了解到以下内容: Redis服务器采用单线 ...
- MySQL数据库开发的36条原则【华为云技术分享】
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...
- CentOS 7 安装并配置 MySQL 5.7
Linux使用MySQL Yum存储库上安装MySQL 5.7,适用于Oracle Linux,Red Hat Enterprise Linux和CentOS系统. 1.添加MySQL Yum存储库 ...
- JSSDK制作思路
需求:对外提供一个js的SDK.相当于在原有的原生SDK基础上包装一层方法. SDK原生的方法通过JSExport 协议可以让js调用到原生的方法.你可以写一个协议继承JSExport ,将需要对js ...
- Spring Boot结合Mybatis
pom文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http ...
- BZOJ 2152 聪聪可可(树形DP)
聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般情况下石头剪刀布就好了,可是他们已经玩儿腻了 ...