前端时间需要把项目打包到docker中运行,于是就让组员去探索,最后整个过程是这样的。

首先我们做java开发,一般都是使用springboot开发,开发完成,我们需要把springboot项目打包成jar包。此时我们jar包就能在服务器上使用 java -jar xxxx.jar 运行项目了,但是在docker中,需要把jar包在打包成镜像。

我的开发环境是windows,然后是双系统,我在任意一个文件夹,shift+鼠标右键就能调出linux界面

首先我们需要编写一个Dockerfile文件 ,把它和springboot打包好的jar包,放到同一个文件夹下面。如果你用linux系统,就把jar包和Dockerfile文件上传到linux系统下,只要保证是在同一个目录下面即可。

Dockerfile内容如下:

FROM registry.otrs365.cn/servicecool/jdk:8u241    #基础镜像,当前新镜像是基于那个镜像, 像这里就是基于java 8环境
ADD diantong-IP-4.0.0-SNAPSHOT.jar diantong-IP.jar #diantong-IP-4.0.0SNAPSHOT.jar为你SpringBoot打包最终的成包名称,别名为diantong-IP.jar
EXPOSE 9081 # 这个是你项目的要暴露的端口,你项目的端口是什么这里就写什么
ENTRYPOINT ["java","-jar","/diantong-IP.jar"] #这句话相当于 java -jar diantongIP.jar

linux系统下,FROM 后面指向你docker中安装的jdk的镜像

注意,Dockerfile是没有后缀的。

接下来就是构建镜像了

在存放Dockerfile和项目jar的目录下,执行以下的命令(注意后面有一个 . 不能少)

docker build -t diantong-ip .

这里有一个坑,就是你jar包的名称不能有大写的,有大写你在运行上面命令时也要把大写改成小写
等待运行完成,执行成功后docker中就多了个镜像了。执行下面命令查看你的镜像:

docker images

启动容器

-p这个属性我这边详细说一下:9081:9081的意思是将我宿主机的9081端口映射到容器端口9081,我在前
面已经配置过这个端口了

docker run -d -p 9081:9081 diantong-ip

启动成功,使用

docker ps

就能看到容器了,至此,一个springboot应用就成功放到docker中运行了。

如果需要把这个应用给你的朋友,那只需要

docker save -o diantongip.tar diantong-ip:latest

就会得到一格diantongip.tar压缩包,把这个压缩包发给你的朋友

使用以下命令,就能导进他的docker里面了

注:此文章写于2021/08/11   若时间过长,文章内容步骤稍有偏差。

springboot项目在docker中运行的更多相关文章

  1. docker 运行jenkins及vue项目与springboot项目(五.jenkins打包springboot服务且在docker中运行)

    docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...

  2. docker 运行jenkins及vue项目与springboot项目(二.docker运行jenkins为自动打包运行做准备)

    docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...

  3. docker 运行jenkins及vue项目与springboot项目(四.docker运行nginx)

    docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...

  4. mac和linux下使用Docker,部署SpringBoot项目到docker

    主要是看一下如何在linux及mac上安装docker,创建docker镜像,部署SpringBoot项目到docker,并借助于DaoCloud进行docker镜像下载加速等. 我用的电脑是mac, ...

  5. 【Docker】Maven打包SpringBoot项目成Docker镜像并上传到Harbor仓库(Eclipse、STS、IDEA、Maven通用)

    写在前面 最近,在研究如何使用Maven将SpringBoot项目打包成Docker镜像并发布到Harbor仓库,网上翻阅了很多博客和资料,发现大部分都是在复制粘贴别人的东西,没有经过实践的检验,根本 ...

  6. 在docker中运行ASP.NET Core Web API应用程序

    本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Cor ...

  7. docker中运行ASP.NET Core Web API

    在docker中运行ASP.NET Core Web API应用程序 本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过 ...

  8. SpringBoot项目构建成jar运行后,如何正确读取resource下的文件

    SpringBoot项目构建成jar运行后,如何正确读取resource下的文件 不管你使用的是SpringBoot 1.x还是SpringBoot2.x,在开Dev环境中使用eclipse.IEAD ...

  9. Docker中运行nginx

    Docker中运行nginx 1.Docker中运行nginx 2.配置文件 2.1 nginx.conf 2.2 default.conf 3.docker的镜像可以挂什么卷 部分内容原文地址: C ...

  10. k3d入门指南:在Docker中运行K3s

    在本文中,我们将简单了解k3d,这是一款可让您在安装了Docker的任何地方运行一次性Kubernetes集群的工具,此外在本文中我们还将探讨在使用k3d中可能会出现的一切问题. 什么是k3d? k3 ...

随机推荐

  1. KVM 硬盘分区扩容(GPT与MBR两种分区、fdisk 与 growpart两种方法)

    因为认知顺序的原因,之前我都是用fdisk命令手工删除分区表后重建进行扩容,后面才发现可以用growpart命令. 实战建议直接点 AWS EC2 存储空间扩容 跳转过去参考,学习操作可以继续往下看. ...

  2. Pandas:在DataFrame中添加一行,并设置行索引

    解决方案 效果图 参考链接 https://blog.csdn.net/Caiqiudan/article/details/107788525

  3. oracle 11g手工建库步骤(初学者)

    要建立的数据库ORACLE_SID=test1sys和system的密码为oracle1.建立相应的目录mkdir /u01/app/oracle/oradata/test1mkdir /u01/ap ...

  4. [golang]推送钉钉机器人消息

    前言 通过钉钉群机器人的webhook,实现消息推送. 本文代码仅示例markdown格式的消息. 示例代码 注意修改钉钉机器人的webhook package main import ( " ...

  5. GrapeCity Documents V6.0 Update 2发布,新增支持SpreadJS的.sjs文件格式

    近日,GrapeCity Documents 正式迎来其V6.2 的发布更新,能够支持 SpreadJS 中 .sjs 类型的文件.这一重大更新将为用户带来更多地惊喜. .sjs文件有两个关键优势:空 ...

  6. dotnet SemanticKernel 入门 自定义变量和技能

    本文将告诉大家如何在 SemanticKernel 框架内定义自定义的变量和如何开发自定义的技能 本文属于 SemanticKernel 入门系列博客,更多博客内容请参阅我的 博客导航 自定义变量是一 ...

  7. 一个.NET 7 + DDD + CQRS +React+Vite的实战项目

    项目简介 基于SignalR实现聊天通信,支持横向扩展,可支撑上万用户同时在线聊天 后端架构 后端技术栈采用 .NET 7 PostgreSQL (业务数据库) Redis(用于存放热点数据,和支持S ...

  8. Docker部署cas

    一.首先安装cas镜像 1.拉取cas docker镜像 docker pull apereo/cas 2.启动容器: docker run  --name cas -p 8443:8443 -p 8 ...

  9. [错误] SQL logic error near "date": syntax error

    问题的来源 今天把一个项目的数据库从MySQL改到Sqlite 调试时发生了这个错误. 百度又看不懂英文(很多是国外发的), 就折腾了一下 原因 C# Sqlite 不能使用参数前缀"?&q ...

  10. Stream流的应用

    Stream流的应用 Collectors.groupingBy(ShopCartItemDto::getShopId) stream()方法将该列表转化为一个流,可以对其中的元素进行操作. coll ...