【Docker】Springboot项目打成docker镜像并生成容器

本文详细指导如何在Docker环境下搭建SpringBoot项目,包括设置docker环境、启动项目、打包jar、编写Dockerfile、构建镜像和运行容器,适合初学者学习docker与SpringBoot集成。
摘要由CSDN通过智能技术生成

目录

一、先说明下主要的步骤

二、具体步骤详解

1.确保docker环境能够正常运行

2.确保springboot项目能正常运行

3.将springboot项目打包成jar包

4.编写Dockerfile文件

5.使用docker build命令生成镜像

6.使用docker run命令生成容器


一、先说明下主要的步骤

  1. 确保docker环境正常运行,不论是远程的还是本地的        
  2. 确保springboot项目能正常运行
  3. 将springboot项目打包成jar包
  4. 编写Dockerfile文件
  5. 使用docker build命令生成镜像
  6. 使用docker run命令生成容器

二、具体步骤详解

1.确保docker环境能够正常运行

linux安装docker环境:以CenterOS为例,参考CentOS Docker 安装 | 菜鸟教程

使用官方安装脚本自动安装

安装命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

也可以使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

使用命令:docker,弹出如图所示即说明安装成功


windows安装docker环境:以windows10为例,参考Windows Docker 安装 | 菜鸟教程

本次介绍windows10的安装方式,windows7/8请利用 docker toolbox 来安装,国内可以使用阿里云的镜像来下载,下载地址:docker-toolbox-windows-docker-toolbox安装包下载_开源镜像站-阿里云

windows10安装docker环境

1.需要开启Hyper-V,方式如图所示,在程序和功能打开

或者通过命令来启用 Hyper-V ,请右键开始菜单并以管理员身份运行 CMD/PowerShell,执行以下命令:Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All 

2.下载和安装Docker桌面环境:Redirecting…

下载完后按安装引导安装即可,傻瓜式安装,不多做介绍

安装完,启动docker,然后在CMD/PowerShell输入docker,弹出如图所示即说明安装成功

打开桌面管理工具就是长这样

上面步骤做完,就可以在本地使用docker了,如果想要使用远程docker环境,则要配置远程docker(当然本地要有安装docker ctl,不然怎么使用docker命令),我连接远程CenterOS环境下的docker。windows配置请参考我的另一篇文章

【Docker】windows环境下的docker如何开放远程2375端口_源林氏的博客-CSDN博客indows环境下的Docker是运行在Hyper-v的虚拟机中或者是wsl windows子系统中,这些虚拟机和宿主机是NAT方式连接的,宿主机的物理网络和虚拟机网是不在同一子网中。因此需要解决虚拟机和宿主机网络不在同一子网的问题。.........https://blog.csdn.net/ET1131429439/article/details/126541568

vi /lib/systemd/system/docker.service

CenterOS7及以上的,修改ExecStart这行为下面的值

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

 CenterOS7以下的,修改ExecStart这行为下面的值

ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

然后就是保存文件,重载,重启

systemctl daemon-reload
service docker restart

查看以下能不能连接上docker服务,有信息打印出来就可以了

curl http://localhost:2375/version

设置idea连接远程docker环境 

在linux 本地可以访问,但远程又连接不上(非Connection successful),很有可能是linux没有开放2375端口,检查一下linux的防火墙设置,具体可参考我的文章。

 【Linux】防火墙开放端口_源林氏的博客-CSDN博客

windows同理,如果访问不到,就需要在windows防火墙开放端口

2.确保springboot项目能正常运行

写了个自定义controller,返回hello world!

运行启动类 ,如图打印spring logo且没有异常或报错信息即表示启动成功

浏览器访问http://localhost:8081/test(端口我陪了8081)

3.将springboot项目打包成jar包

将springboot项目打包有很多种方式,下面介绍两种

gradle管理项目,使用gradle build打包

Maven管理项目,使用maven package打包

 我是使用maven打包的,拿到jar文件得路径

在pom.xml配置好版本号,打包

mvn clean package -Dmaven.test.skip=true

 这里我拿到tag为0.0.2的版本,进入下一步

4.编写Dockerfile文件

直接在项目根目录新建Dockerfile文件

编写Dockerfile文件,Dockerfile文件,具体怎么写,参考Docker Dockerfile | 菜鸟教程,下面是例子

# Docker image for springboot application
# VERSION 0.0.1
# Author: Kannokaze

### 基础镜像,使用alpine操作系统,openjkd使用8u201
### 也可以使用 java:8
FROM openjdk:8u201-jdk-alpine3.9

#作者
MAINTAINER Kannokaze <1131429439@qq.com>

#系统编码
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8

#声明一个挂载点,容器内此路径会对应宿主机的某个文件夹
VOLUME /tmp

#暴露8080端口
EXPOSE 8080

#定义参数
#ARG JAR_FILE
#应用构建成功后的jar文件被复制到镜像内
#ADD ${JAR_FILE} demo.jar
ADD target/demo-0.0.2-SNAPSHOT.jar demo.jar

#touch命令的作用是修改这个文件的访问时间和修改时间为当前时间,而不会修改文件的内容。
#RUN bash -c 'touch /demo.jar'

#启动容器时的进程
ENTRYPOINT ["java","-Dfile.encoding=UTF8","-Duser.timezone=GMT+08","-jar","demo.jar"]

5.使用docker build命令生成镜像

使用命令,最后的【.】是必须的,代表Dockefile文件的路径,当然可以项目任意位置内,只要填写的Dockerfile路径正确即可

-t :指定要创建的目标镜像名

. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

docker build -t demo:v0.0.2 .

沒有出現警告或异常就算成功了,

然后去远程docker环境看下有没有镜像

docker images 

6.使用docker run命令生成容器

使用命令,生成名为demoContains的容器

docker run -ti -d --name demoContains -p 8089:8081 demo:v0.0.2

--name 容器命名

-p 8089:8081     指定容器内部端口8080指向宿主机容器端口8088

查看,容器是否正确生成

docker ps

curl一下,访问成功


最后就是使用容器的http://ip:port

大功告成 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值