Docker部署maven项目,从数据库服务器部署到项目发布

Docker部署maven项目,从数据库服务器部署到项目发布:包括两种服务器华金搭建和项目部署

文章目录

  • Docker部署maven项目,从数据库服务器部署到项目发布:包括两种服务器华金搭建和项目部署
  • 前言
  • 一. MySQL数据库部署
    • 1.数据库背景
    • 2.安装mysql8.0
    • 3.修改mysql数据库密码
    • 4.开放数据库远程连接
    • 5.使用navicat for mysql连接
  • 二、Doker部署
    • 1. 安装Docker
    • 2. Docker安装jdk和redis
    • 3. 开放docker端口
  • 三、发布项目


前言

收到任务需要在Docker上部署mavent项目的服务,其中有一台数据库和服器和一台项目服务器。首次使用Docker部署项目,从环境搭建到项目上线,一路踩坑,这篇文章主要记录环境部署的流程和遇到的bug。数据库选用MySQL8.0,项目选用spring boot项目

一. MySQL数据库部署

1.数据库背景

由于服务器中给出的MySQL数据库版本是5.7,公司spring boot项目使用的版本是8.0,要先给数据库升级。

2.安装mysql8.0

  1. 查看Linux中是否安装mysql
    rpm -qa |grep -i mysql
    Docker部署maven项目,从数据库服务器部署到项目发布_第1张图片

  2. 若是有,则删除已安装的mysql
    ① 停止mysql服务
    systemctl stop mysqld
    rpm -ev 上面的文件名 ----nodeps
    Docker部署maven项目,从数据库服务器部署到项目发布_第2张图片
    ② 查找mysql相关的目录
    find / -name mysql
    Docker部署maven项目,从数据库服务器部署到项目发布_第3张图片
    ③ 将上面的目录都删除
    rm -rf 目录
    在这里插入图片描述
    ③ 删除mysql配置文件
    rm -rf /etc/my.cnf
    在这里插入图片描述

  3. 创建存放mysql文件的文件夹,并进入
    ① 创建文件夹
    mkdir /usr/local/mysql
    ② 进入该文件夹
    cd /usr/local/mysql

  4. 下载mysql
    wget https://repo.mysql.com//mysql80-community-release-el6-1.noarch.rpm
    Docker部署maven项目,从数据库服务器部署到项目发布_第4张图片
    问题:若是报错-bash: wget: 未找到命令
    解决:yum -y install wget

  5. 使用下载的yum源升级yum包
    rpm -Uvh mysql80-community-release-el6-1.noarch.rpm
    Docker部署maven项目,从数据库服务器部署到项目发布_第5张图片

  6. 查看mysql版本
    mysql -V
    在这里插入图片描述

  7. 修改配置文件
    vi /etc/yum.repos.d/mysql-community.repoDocker部署maven项目,从数据库服务器部署到项目发布_第6张图片
    找到自己对应的mysql版本,我升级之后的mysql版本是8.0
    按insert键,修改enabled=1,gpgcheck=0,。将其他版本修改为enabled=0
    按esc键,退出修改模式,输入wq,保存修改

  8. 安装mysql-community-server
    yum -y install mysql-community-server
    Docker部署maven项目,从数据库服务器部署到项目发布_第7张图片
    ① 问题:若是安装过程中出现以下错误
    在这里插入图片描述
    解决:修改配置文件, vi /etc/yum.repos.d/mysql-community.repo, 将baseurl中的6改成7
    Docker部署maven项目,从数据库服务器部署到项目发布_第8张图片
    ② 问题:若是出现以下错误Docker部署maven项目,从数据库服务器部署到项目发布_第9张图片
    解决:
    (1)下载repo文件
    wget http://mirrors.aliyun.com/repo/Centos-7.repo
    (2)备份并替换系统的repo文件
    cp Centos-7.repo /etc/yum.repos.d/
    cd /etc/yum.repos.d/
    mv CentOS-Base.repo CentOS-Base.repo.bak
    mv Centos-7.repo CentOS-Base.repo (区分大小写)
    (3)执行yum源更新命令
    yum clean all
    yum makecache
    yum update

  9. 启动mysql服务
    ① 启动mysql
    service mysqld start
    ② 查看mysql状态
    systemctl status mysqld
    ③ 关闭mysql
    service mysqld stopDocker部署maven项目,从数据库服务器部署到项目发布_第10张图片

3.修改mysql数据库密码

  1. 进入mysql,输入密码按enter键
    mysql -u root -p
    在这里插入图片描述
  2. 查看mysql的默认密码
    grep ‘temporary password’ /var/log/mysqld.log
    在这里插入图片描述
  3. 进入mysql之后,mysql8.0若是没有修改默认密码,则无法进行任何操作
    之前版本修改密码:SET PASSWORD = PASSWORD(‘123456’);
    mysql8.0修改密码:alter user ‘root’@‘localhost’ identified by ‘123456’;
    在这里插入图片描述
  4. 重启mysql服务器
    service mysqld restart

4.开放数据库远程连接

  1. 进入mysql
    mysql -u root -p
  2. 进入mysql数据库,并查询用户信息
    use mysql;
    SELECT Host,User FROM user;
    在这里插入图片描述
    Docker部署maven项目,从数据库服务器部署到项目发布_第11张图片
  3. 执行命令
    UPDATE user SET Host = ‘%’ WHERE User = ‘root’ LIMIT 1;
    在这里插入图片描述
  4. 强制刷新权限
    在这里插入图片描述
  5. 再次查询用户信息,其中%代表所有ip都可以远程连接
    Docker部署maven项目,从数据库服务器部署到项目发布_第12张图片

5.使用navicat for mysql连接

问题:1251 client does not support authentication protocol requested by server;consider upgrading Mysql client
原因: 使用MySQL客户端Navicat连接数据库MySQL8.0,MySQL8.0 之前的版本中加密规则是mysql_native_password,而MySQL8.0,加密规则是caching_sha2_password
解决:① 在linux中登录mysql,mysql -u root -p
② 执行命令,ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123’;

二、Doker部署

1. 安装Docker

  1. 若安装过Docker,需要先卸载
    yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine

  2. 安装依赖
    yum install -y yum-utils \
    device-mapper-persistent-data \
    lvm2
    Docker部署maven项目,从数据库服务器部署到项目发布_第13张图片

  3. 设置yum仓库
    yum-config-manager \
    –add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo在这里插入图片描述

  4. 安装docker
    yum install docker-ce docker-ce-cli containerd.io
    Docker部署maven项目,从数据库服务器部署到项目发布_第14张图片

  5. 启动并加入开机启动
    systemctl start docker
    systemctl enable docker
    在这里插入图片描述

  6. 查看docker版本,验证是否安装成功
    docker version
    Docker部署maven项目,从数据库服务器部署到项目发布_第15张图片

  7. 运行官方demo,hello-world,运行时会自动从官网下载
    docker run hello-world
    Docker部署maven项目,从数据库服务器部署到项目发布_第16张图片

  8. 查看dokcer容器
    docker images
    在这里插入图片描述

2. Docker安装jdk和redis

  1. 安装jdk
    docker pull java

  2. 运行jdk
    docker run -it -d --name java java
    Docker部署maven项目,从数据库服务器部署到项目发布_第17张图片

  3. 安装redis
    在这里插入图片描述

3. 开放docker端口

  1. docker默认端口号是2375,查看该端口是否被占用
    netstat -ntlpDocker部署maven项目,从数据库服务器部署到项目发布_第18张图片
    问题:-bash: netstat: 未找到命令
    解决:yum -y install net-tools

  2. 若是端口被占用,结束该进程,pid为进程号
    kill -9 pid
    在这里插入图片描述

  3. 重启docker
    ① 重启docker的守护进程
    systemctl restart docker
    ② 重启docker
    systemctl restart docker

  4. 查看防火墙状态
    systemctl status firewalld
    Docker部署maven项目,从数据库服务器部署到项目发布_第19张图片

  5. 设置端口对外开放
    firewall-cmd --zone=public --add-port=2375/tcp --permanent
    在这里插入图片描述

  6. 查看2375端口是否对外开放
    firewall-cmd --query-port=2375/tcp
    在这里插入图片描述

  7. 修改配置文件
    vi /usr/lib/systemd/system/docker.service
    Docker部署maven项目,从数据库服务器部署到项目发布_第20张图片
    配置文件中的ExecStart一定要改成
    ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock -H fd:// --containerd=/run/containerd/containerd.sock
    不然会在发布项目的时候,莫名其妙的卡住,实则是连不上docker

  8. 更改完配置之后,重启docker
    systemctl daemon-reload
    systemctl restart docker

三、发布项目

  1. 在pom文件中添加
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
            <plugin>
                <groupId>com.spotifygroupId>
                <artifactId>docker-maven-pluginartifactId>
                <version>0.4.13version>
                
                <executions>
                    <execution>
                        <id>build-imageid>
                        <phase>installphase>
                        <goals>
                            <goal>buildgoal>
                        goals>
                    execution>
                executions>
                <configuration>
                    
                    <imageName>${project.artifactId}imageName>
                    <imageTags>
                        <imageTag>${project.version}imageTag>
                        
                    imageTags>
                    <baseImage>javabaseImage>
                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]entryPoint>
                    
                    <dockerHost>http://127.00.00.1:2375dockerHost>
                    
                    <serverId>docker-registryserverId>
                    
                    <resources>
                        <resource>
                            <targetPath>/targetPath>
                            <directory>${project.build.directory}directory>
                            <include>${project.build.finalName}.jarinclude>
                        resource>
                    resources>
                configuration>
            plugin>
        plugins>
    build>
  1. 在idea中输入命令 mvn clean install,发布完成
  2. 进入docker服务器
    ① 启动容器
    docker run 容器的imageId
    ② 在后台别名启动容器
    docker run --name=容器别名 -d imageId
    ③ 项目访问路径是服务器Ip
    docker run --name=容器别名 -d --net host imageid

参考博客与网站:
链接: https://www.cnblogs.com/daixh/articles/10799901.html
链接: https://blog.csdn.net/q258523454/article/details/84555847
链接: https://blog.csdn.net/q610376681/article/details/90483576

你可能感兴趣的:(Linux服务器)