前端时间需要把项目打包到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. 在DevExpress的GridView的列中,动态创建列的时候,绑定不同的编辑处理控件

    在使用DevExpress的GridView的时候,我们为了方便,往往使用一些扩展函数,动态创建GridView列的编辑控件对象,然后我们可以灵活的对内容进行编辑或者使用一些弹出的对话框窗体进行处理内 ...

  2. Linux 软件包:lvm

    lvm LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制. Linux用户安装Linux操作系统时遇到的一个常见的难以决定的 ...

  3. 2023-07-29:给你一个由数字组成的字符串 s,返回 s 中独特子字符串数量。 其中的每一个数字出现的频率都相同。

    2023-07-29:给你一个由数字组成的字符串 s,返回 s 中独特子字符串数量. 其中的每一个数字出现的频率都相同. 答案2023-07-29: 大体步骤如下: 1.初始化变量base为固定值10 ...

  4. vim 配色调整

    ~/.vimrc " Configuration file for vim set modelines=0 " CVE-2007-2438 set number " se ...

  5. OpenLayers示例

    http://develop.smaryun.com:81/API/JS/OL3InterfaceDemo/index.htm

  6. Jmeter线程组间传递变量

    做接口测试,上一个线程组(A线程组)提取的变量,需要传递给下一个线程组(B线程组)使用.故需要将A线程组内提取的变量设置为全局变量.实现如下: 1. json提取变量(A线程组) 通过json提取器, ...

  7. 安装iTerm2和oh-my-zsh

    安装iTerm2和oh-my-zsh 此文是在参考许多教程(见目录:参考)并结合本人安装经历写下的一篇关于iTerm2和oh-my-zsh的认识和超级详细安装教程.全文所有图片均为本人截屏拍摄.希望能 ...

  8. 想了解API接口,这一篇就够了

    API(Application Programming Interface)接口,对于大多数人来说可能还比较陌生,但实际上我们每天都在与它打交道.无论是使用手机上的应用程序,还是在网上购物,都少不了A ...

  9. LeetCode952三部曲之一:解题思路和初级解法(137ms,超39%)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 题目描述 难度:困难 编程语言:Java 给定一个由不 ...

  10. brpc internal

    brpc 内部实现 thread model pthread 1:1atomic cache同步降低性能 fiber n:1 -> nginx 多核难以扩展, 用户不能做阻塞操作. contex ...