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

  • 相关阅读:
    UVa 1151 Buy or Build【最小生成树】
    UVa 216 Getting in Line【枚举排列】
    UVa 729 The Hamming Distance Problem【枚举排列】
    HDU 5214 Movie【贪心】
    HDU 5223 GCD
    POJ 1144 Network【割顶】
    UVa 11025 The broken pedometer【枚举子集】
    HDU 2515 Yanghee 的算术【找规律】
    Java基本语法
    Java环境变量,jdk和jre的区别,面向对象语言编程
  • 原文地址:https://www.cnblogs.com/whyaza/p/11351666.html
Copyright © 2011-2022 走看看