docker打包springboot镜像

一.IDEA打包Docker镜像

1.IDEA中配置docker插件

主要是为了给idea配置docker插件

springboot gradle 强制指定依赖版本 gradle启动springboot项目_服务器


2.配置gradel文件

主要是需要给项目中配置docker插件

springboot gradle 强制指定依赖版本 gradle启动springboot项目_docker_02


springboot gradle 强制指定依赖版本 gradle启动springboot项目_Docker_03


3.配置DockerFile文件

springboot gradle 强制指定依赖版本 gradle启动springboot项目_服务器_04


第一行的FROM命令,指定了我们这个镜像基于openjdk这个镜像制作。

第二行的VOLUME命令,定义了一个持久化存储,指向容器中的tmp文件夹。SpringBoot应用为内置的Tomcat服务器实例创建的默认工作目录为tmp,通过该命令,可以在运行Docker的宿主机目录/var/lib/docker创建一个临时的目录,挂接到容器内部的tmp去。

如果你的SpringBoot应用不会进行持久化写操作,则该步骤可以省略。

第三行和第四行命令,把本地目录下target文件夹里打好的jar文件添加到容器里,重命名为app.jar.

第五行:指定和外界交互的窗口8082

第六行:ENTRYPOINT,顾名思义,容器镜像运行的起始点。作用是设置环境变量。在复杂的使用场景中,我们可能需要使用各种参数启动JVM,这些参数通过ENV命令设置的环境变量传入Java命令。在这个简单的例子里可以省略环境变量的设置。

DockerFile文件文件存放的位置如图

springboot gradle 强制指定依赖版本 gradle启动springboot项目_java_05


4.将springboot项目打包成docker镜像

1).新建完gradle以后直接启动

springboot gradle 强制指定依赖版本 gradle启动springboot项目_Docker_06


2).控制台出现一下日志说明打成镜像成功

springboot gradle 强制指定依赖版本 gradle启动springboot项目_Docker_07


3).命令行查看镜像是否存在

springboot gradle 强制指定依赖版本 gradle启动springboot项目_java_08


出现了自己命名的镜像就说明成功了。

4).测试镜像是否可以正常启动(注意本地环境和生产环境的ip和数据库)

springboot gradle 强制指定依赖版本 gradle启动springboot项目_docker_09


5).启动成功后需要将镜像保存到本地方便上传到数据库

前面是镜像名,后面是镜像打成tar包存放的位置及tar包名称

springboot gradle 强制指定依赖版本 gradle启动springboot项目_服务器_10


5.tar包加载到服务器中(服务器已安装了docker环境)

1)将tar传到服务器上任一位置

springboot gradle 强制指定依赖版本 gradle启动springboot项目_java_11


2)装载之前打包的tar文件,首先需要安装好你的docker,并运行。

执行命令装载到你的docker中

springboot gradle 强制指定依赖版本 gradle启动springboot项目_服务器_12


6.运行docker镜像

springboot gradle 强制指定依赖版本 gradle启动springboot项目_Docker_13


此命令是创建一个docker容器并启动,如果命令行关闭了项目也会停止,故启动完以后,可以查看一下docker容器

springboot gradle 强制指定依赖版本 gradle启动springboot项目_docker_14


可以利用命令docker start 容器id

springboot gradle 强制指定依赖版本 gradle启动springboot项目_服务器_15


停止容器命令:docker stop 容器id

查看某容器的log:docker logs 容器id

附加

服务器安装docker环境

前提:服务器版本必须大于等于3.8

· linux内核版本依赖

· kernel version >= 3.8

· 可以使用如下命令查看

· uname -a | awk ‘{split($3, arr, “-”); print arr[1]}’

· 如果已安装过Docker, 需要移除老版本的Docker
sudo yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine

· 添加Docker repository yum源

国内源, 速度更快, 推荐

sudo yum-config-manager
–add-repo
https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo

官方源, 服务器在国外, 安装速度慢

$ sudo yum-config-manager \

–add-repo \

· 开始安装Docker Engine
sudo yum makecache fast
sudo yum install docker-ce docker-ce-cli containerd.io

· 开启Docker
sudo systemctl enable docker
sudo systemctl start docker

· 验证是否安装成功
sudo docker run hello-world
· 如果出现"Hello from Docker.", 则代表运行成功

· 如果在每次运行docker命令是, 在前面不添加sudo, 可以执行如下命令:
sudo usermod -aG docker $USER

· 如果嫌上面安装步骤麻烦, 可以运行如下脚本来安装
· 不能在生产系统中使用
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun

sudo systemctl enable docker
sudo systemctl start docker

sudo groupadd docker
sudo usermod -aG docker $USER
2.在Ubuntu上安装
· linux内核版本依赖
· kernel version >= 3.8
· 可以使用如下命令查看
· uname -a | awk ‘{split($3, arr, “-”); print arr[1]}’

· 操作系统依赖, 如下版本都可以
Disco 19.04
Cosmic 18.10
Bionic 18.04 (LTS)
Xenial 16.04 (LTS)
· 如果已安装过Docker, 需要移除老版本的Docker
sudo apt-get remove docker docker-engine docker.io containerd runc

· 使用Docker repository 来安装

更新apt包索引

sudo apt-get update

为支持https

sudo apt-get install
apt-transport-https
ca-certificates
curl
gnupg-agent
software-properties-common

添加Docker GPG秘钥

国内源

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

或者国外源

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

添加安装源

推荐国内源

sudo add-apt-repository
“deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu
$(lsb_release -cs)
stable”

或者国外源

sudo add-apt-repository \

"deb [arch=amd64] https://download.docker.com/linux/ubuntu \

$(lsb_release -cs) \

stable"

· 安装Docker

更新apt包索引

sudo apt-get update

安装docker

sudo apt-get install docker-ce docker-ce-cli containerd.io
· 开启Docker
sudo systemctl enable docker
sudo systemctl start docker
· 验证是否安装成功
sudo docker run hello-world