zoukankan      html  css  js  c++  java
  • docker快速部署本地项目到服务器(tomcat8+mysql8)

    目标是:将本地运行的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下来就又会快很多,这就又是另一篇文章了

  • 相关阅读:
    (转载)C#控件缩写规范
    ToString()格式和用法大全,C#实现保留两位小数的方法
    C#数字前面如何补0
    (转载)C#语言开发规范
    (转载)C#:Enum、Int和String的互相转换,枚举转换
    [踩坑系列]URLEncode 中对 空格的编码有 “+”和“%20”两种
    [IDEA]IDEA设置注释模板
    [Mybatis]Mybatis 常用标签及功能整理
    [设计模式]静态代理
    记一次java电话面试
  • 原文地址:https://www.cnblogs.com/whyaza/p/11351666.html
Copyright © 2011-2022 走看看