使用docker部署springboot项目并连接上mysql数据库

使用docker部署springboot项目并连接上mysql数据库

预览:http://8.142.6.23/#/screen

项目开源地址:
前端vue:https://gitee.com/gaohan888/echarts-learning/tree/master/vision
后端node.js: https://gitee.com/gaohan888/node-js-learning/tree/master/echarts_server

需要的知识

  • Linux操作系统
  • docker(了解git的工作方式即可)

工具

  • xshell(用来连接linux服务器)
  • xftp用来给linux服务器上传文件
  • sqlyog(或者navicat)在服务器上解析.sql脚本
  • maven(idea自带) 用来打包

接下来我们开始正式操作

服务器的选择

我选择的是阿里云的学生机,比较便宜,半年57。想要购买学生机的话直接百度搜索阿里云学生机,支付宝验证即可。我的配置如下

Docker

简单介绍一下,docker我理解的就是更方便的部署工具,如果有玩过服务器的同学都知道,在linux服务器上配置mysql是一件挺麻烦的事,而用了docker,只需要几个命令,就可以配置好mysql。

docker 的三个概念:

  1. 仓库:仓库就类比于github仓库,上面存储着各种各样版本的软件
  2. 镜像,我们从docker上拉取一个软件初始就是个镜像
  3. 容器,容器就是镜像运行时,可以用的软件

类比一下好理解,镜像就是java中的类,而容器则是由类生成的对象,类无法直接使用,而对象可以。

接下来开始实操

我们按照官网来

在安装docker前,先安装docker的包

sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

配置docker的仓库,从docker官方仓库下载会太慢,我们就将仓库配置到阿里云(类似于maven的仓库配置)

sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装docker

sudo yum install docker-ce docker-ce-cli containerd.io

这里有个y要选择

要继续配置一下阿里云镜像加速,按如下步骤完成即可.

步骤2,是写配置文件

1. mkdir -p /etc/docker
2. vim /etc/docker/daemon.json
3. systemctl daemon-reload
4. systemctl restart docker

步骤2的配置文件格式,(估计会有人在这有问题,在这有问题的联系我),

{
  "registry-mirrors": ["https://{自已的编码}.mirror.aliyuncs.com"]
}

自己的编码如何查看,网址: https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

开启docker

sudo systemctl start docker

跑一个docker版的helloworld,类似于java的hello,证明安装成功

sudo docker run hello-world

出现下图内容,表示docker运行成功

服务器的配置

服务器配置总结为三个,防火墙,端口,和安全组

1.查看防火墙状态,如未开启要开启防火墙,我的是开启的

firewall-cmd --state

如果没开启,开启防火墙的命令

systemctl start firewalld.service

添加对外开放的端口,我是开了三个端口,一个80(Http端口),一个8080(tomcat),一个2206(mysql)

1. firewall-cmd --zone=public --add-port=80/tcp --permanent
2. firewall-cmd --zone=public --add-port=8080/tcp --permanent
3. firewall-cmd --zone=public --add-port=3306/tcp --permanent

开完端口,要重新加载防火墙

firewall-cmd --reload

查看开放的端口

firewall-cmd --list-ports

配置安全组:百度如何配置进入配安全组的地方,按照下图配置的条件配置即可

安装mysql

从docker hub上查找mysql镜像

docker search mysql

从docker hub上拉取mysql,我拉取的mysql版本是mysql5.7

docker pull mysql:5.7

运行mysql,开放的端口是3306,密码是123456, -d是后台运行

docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

docker ps 查看容器创建成功

有个命令,可以进入容器内部,ctrl+p+q可以以后台运行的方式退出这个软件

docker exec -it 容器的id /bin/bash

此时出现上图内容,表示mysql已经没有问题

连接服务器上的mysql

执行我提供的sql脚本就好了

执行成功

将springboot项目打成jar包

将applicayion.yml中的url中的localhost改成你服务器的公网ip,还有将密码改成你服务器上mysql的密码

打包的命令有两个,mvn clean ,mvn package

在target文件夹出现jar表示成功

编写Dockfile文件

将springboot jar包项目打包成Docker镜像

在 /home 目录下创建docker文件夹

mkdir /home/docker 

使用xftp上传jar包

编写Dockerfile文件

vim Dockerfile

完整命令, vim的使用方法:点击i开始编写,编写完后点击esc,点击冒号,输入wq保存

FROM java:8
ADD blog-0.0.1-SNAPSHOT.jar /blog.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/blog.jar"]

解释

#注意,docker命令全部大写,这是规定。
#   From 关键字表示,jar包依赖的环境。java:8  相当于jdk1.8
FROM java:8
 
#ADD命令 
#   blog-0.0.1-SNAPSHOT.jar:这是你上传jar包的名称。
#   /blog.jar:这是自定义的名称。但是注意要有之前的/
ADD blog-0.0.1-SNAPSHOT.jar /blog.jar
 
#MAINTAINER  作者名称。可以删除不写。
MAINTAINER zhangxiaosan
 
#EXPOSE 项目暴露的端口号
EXPOSE 8080
 
#/blog.jar此处的名称要和ADD命令后面的一样。
ENTRYPOINT ["java","-jar","/blog.jar"]

在docker文件夹下执行如下命令

docker build -t blog:1.0 .

解释

说明:
  blog   代表要打包成的镜像名称。按照自己实际情况写。
  :1.0   代表版本号,可以不写则默认为latest
  .    代表为当前目录。这就是为什么一直在步骤一文件夹中进行操作,并且Dockerfile在此文件夹中的原因。
 
若之前Dockerfile不在步骤一的文件夹中 则需要指定到对应的地址。

接下来用docker images 就可以查看到这个镜像已经被创建好了,接下来运行这个镜像就可以了

docker run --name blog -d -p 80:8080 blog:1.0

此时就可以用你的公网ip访问了,我绑定了域名,可以用域名访问。

还有个命令要提下,可以查看容器运行时的日志

docker logs 容器id

访问

  • 43
    点赞
  • 272
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
使用docker部署springboot+MySQL项目,可以按照以下步骤进行操作: 1. 编写Dockerfile文件,指定基础镜像、安装JDK和MySQL等依赖,将项目打包成jar包并复制到镜像中。 ```dockerfile FROM openjdk:11-jdk-slim VOLUME /tmp ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar RUN mkdir -p /var/lib/mysql RUN apt-get update && apt-get install -y mysql-server RUN echo "bind-address = 0.0.0.0" >> /etc/mysql/mysql.conf.d/mysqld.cnf RUN service mysql start && \ mysql -uroot -e "CREATE DATABASE db_name" && \ mysql -uroot -e "CREATE USER 'username'@'%' IDENTIFIED BY 'password'" && \ mysql -uroot -e "GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'%';" EXPOSE 8080 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ``` 2. 构建镜像 在Dockerfile的目录下执行以下命令: ```shell docker build -t springboot-mysql . ``` 这里将镜像命名为springboot-mysql。 3. 运行容器 执行以下命令运行容器: ```shell docker run -d -p 8080:8080 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=db_name -e MYSQL_USER=username -e MYSQL_PASSWORD=password springboot-mysql ``` 这里将容器的8080端口映射到主机的8080端口,3306端口映射到主机的3306端口,并指定MySQL的root密码、数据库名、用户名和密码。 4. 访问应用 在浏览器中访问http://localhost:8080,即可访问应用。 注意:如果使用docker-compose进行部署,可以在docker-compose.yml文件中指定MySQL的配置,更加方便和灵活。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值