使用Docker发布SpringBoot项目

1、安装Docker

使用xshell连接到自己的服务器。

前提:检查内核环境:得在3.10及以上。centos版本在7及以上。

[root@iZ8vb409m8717t5boglt61Z ~]# uname -r
3.10.0-862.14.4.el7.x86_64
[root@iZ8vb409m8717t5boglt61Z ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

正式安装

Docker的官方帮助文档

1、卸载旧版本

 sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2、需要的安装包

sudo yum install -y yum-utils

3、设置镜像的仓库

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo  #默认是国外的,很慢。
    
 #安装国内的阿里云镜像 
sudo yum-config-manager \
    --add-repo \   
  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4、安装docker

#更新软件包索引
yum makecache fast
 sudo yum install docker-ce docker-ce-cli containerd.io

5、启动docker

sudo systemctl start docker

6、使用docker version查看是否安装成功

docker version

在这里插入图片描述

7、测试hello-world

docker run hello-world

在这里插入图片描述
8、查看镜像

docker images
[root@iZ8vb409m8717t5boglt61Z ~]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        4 months ago        13.3kB

拓展:卸载docker

#卸载依赖
sudo yum remove docker-ce docker-ce-cli containerd.io
#删除资源   /var/lib/docker是docker的默认工作路径
sudo rm -rf /var/lib/docker

2、配置阿里云镜像加速器

在这里插入图片描述

#1
sudo mkdir -p /etc/docker

#2
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://7j3fyo2t.mirror.aliyuncs.com"]
}
EOF

#3
sudo systemctl daemon-reload

#4
sudo systemctl restart docker

3、服务器配置

主要是三个方面的配置。

  • 防火墙
  • 添加端口
  • 安全组

1、开启防火墙

#查看防火墙状态
firewall-cmd --state

#开启防火墙
systemctl start firewalld.service
[root@iZ8vb409m8717t5boglt61Z ~]# firewall-cmd --state
not running
[root@iZ8vb409m8717t5boglt61Z ~]# systemctl start firewalld.service
[root@iZ8vb409m8717t5boglt61Z ~]# firewall-cmd --state
running

2、添加对外的端口

#添加80端口
[root@iZ8vb409m8717t5boglt61Z ~]#  firewall-cmd --zone=public --add-port=80/tcp --permanent
success

#添加8080端口
[root@iZ8vb409m8717t5boglt61Z ~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
success

#添加3306端口
[root@iZ8vb409m8717t5boglt61Z ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success

#添加端口之后,要重新加载防火墙
[root@iZ8vb409m8717t5boglt61Z ~]# firewall-cmd --reload
success

#查看开放的端口
[root@iZ8vb409m8717t5boglt61Z ~]# firewall-cmd --list-ports
6379/tcp 80/tcp 8080/tcp 3306/tcp

3、安全组配置
在这里插入图片描述

4、安装mysql

docker hub搜索mysql。文档上有详细的说明。

#1、搜索镜像
docker search mysql

#2、下载,默认是最新版
#也可以指定版本号 docker pull mysql:版本号
docker pull mysql

#3、查看下载的镜像
docker images

#4、创建mysql容器置并设置root的密码为123456
docker run -d -p 3306:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456

#5、查看容器
docker ps

#6、进入容器docker exec -it 容器号 /bin/bash
docker exec -it bab0353e153c /bin/bash
[root@iZ8vb409m8717t5boglt61Z ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
bab0353e153c        mysql:latest        "docker-entrypoint.s…"   About an hour ago   Up About an hour    0.0.0.0:3306->3306/tcp, 33060/tcp   mymysql
[root@iZ8vb409m8717t5boglt61Z ~]# docker exec -it bab0353e153c /bin/sh
# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.20 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select version(); #查看mysql的版本号
+-----------+
| version() |
+-----------+
| 8.0.20    |
+-----------+
1 row in set (0.00 sec)

使用工具连接mysql

在这里插入图片描述

如果连接不上mysql,可以参考博客

接下来就是执行sql文件。

img

5、打包SpringBoot项目

1、将你数据库url中localhost改为你服务器的ip,并修改docker上安装的mysql密码。

接下来打包,右击右侧的maven,如下图:

再三检查,不要写错。
在这里插入图片描述

2、等待build 成功。如下图:
在这里插入图片描述

成功之后,会发现target里面多了如下jar。
在这里插入图片描述

6、编写Dockerfile文件

#在home下创建docker文件夹
mkdir /home/docker 

你可以在idea项目中写,也可以在服务器上写,都可以。

Dockerfile的文件内容如下:

#创建Dockerfile文件并打开
vim Dockerfile

#添加的内容如下:
FROM java:8

ADD demo-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命令 
#demo-blog-0.0.1-SNAPSHOT.jar:这是你上传jar包的名称。
#/blog.jar:这是自定义的名称。但是注意要有之前的/
ADD demo-blog-0.0.1-SNAPSHOT.jar /blog.jar
 
#EXPOSE 项目暴露的端口号
EXPOSE 8080
 
#/blog.jar此处的名称要和ADD命令后面的一样。
ENTRYPOINT ["java","-jar","/blog.jar"]

传输到服务器上。
在这里插入图片描述

7、运行

进入到/home/docker下,可以看到上传的文件,一个jar,一个Dockerfile。

[root@iZ8vb409m8717t5boglt61Z ~]# cd /home/docker
[root@iZ8vb409m8717t5boglt61Z docker]# ls
demo-blog-0.0.1-SNAPSHOT.jar  DockerFile

执行

[root@iZ8vb409m8717t5boglt61Z docker]# docker build -t blog:1.0 .

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

如下就执行成功了。

[root@iZ8vb409m8717t5boglt61Z docker]# docker build -t blog:1.0 .
Sending build context to Docker daemon  33.24MB
Step 1/4 : FROM java:8
8: Pulling from library/java
5040bd298390: Pull complete 
fce5728aad85: Pull complete 
76610ec20bf5: Pull complete 
60170fec2151: Pull complete 
e98f73de8f0d: Pull complete 
11f7af24ed9c: Pull complete 
49e2d6393f32: Pull complete 
bb9cdec9c7f3: Pull complete 
Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
Status: Downloaded newer image for java:8
 ---> d23bdf5b1b1b
Step 2/4 : ADD demo-blog-0.0.1-SNAPSHOT.jar /blog.jar
 ---> 4e9a3ac9e03e
Step 3/4 : EXPOSE 8080
 ---> Running in 0897a57a4d85
Removing intermediate container 0897a57a4d85
 ---> 67dceec547a7
Step 4/4 : ENTRYPOINT ["java","-jar","/blog.jar"]
 ---> Running in ed80fc3d7499
Removing intermediate container ed80fc3d7499
 ---> 19e4ce0e729b
Successfully built 19e4ce0e729b
Successfully tagged blog:1.0

查看镜像:

[root@iZ8vb409m8717t5boglt61Z docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
blog                1.0                 19e4ce0e729b        3 minutes ago       676MB
mysql               latest              30f937e841c8        2 days ago          541MB
hello-world         latest              bf756fb1ae65        4 months ago        13.3kB
java                8                   d23bdf5b1b1b        3 years ago         643MB

运行镜像

#这里我开放的是80端口,所以要通过80去映射项目中的8080
[root@iZ8vb409m8717t5boglt61Z docker]# docker run --name blog -d -p 80:8080 blog:1.0

最后就可以用你的公网ip访问了。

http://自己服务器的公网ip/:80

如果在运行过程中,有错误啥的,可以用下面这个命令查看一下日志。

docker logs 容器id

用自己的服务器地址不安全,后续可以申请个域名,绑定域名,用域名去访问。

下面是我的个人博客系统。放几张图吧。
有需要源码的可以去这里取。还有很多不足之处。后面再多多学习。
在这里插入图片描述
留言板界面。在这里插入图片描述
分类界面。
在这里插入图片描述
标签界面。
在这里插入图片描述
归档界面。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值