当前位置: 首页 > news >正文

Docker构建Springboot项目,并发布测试

把SpringBoot项目打包成Docker镜像有两种方案:

全自动化:先打好docker镜像仓库,然后在项目的maven配置中配置好仓库的地址,在项目里配置好Dockerfile文件,这样可以直接在idea中打包好后自动上传到镜像仓库,然后去服务器上启动这个镜像就行了。

半自动化:半自动化又有两种方案,一种是Dockerfile文件放在项目里面,一种是放在项目外面。

放在项目里面:springboot pom.xml中配置maven插件支持,打包时会使用项目里面的dockerfile,如果没配置插件支持会报错找不到dockerfile文件
放在项目外面:springboot还是打包成普通的jar,然后把这个jar上传到服务器,同时在服务器创建一个Dockerfile文件,执行docker build命令,把这个jar构建成一个docker镜像,然后通过镜像执行。

一般来说用半自动化比全自动化用的多,本文用的算是半自动化方式的第二种,总体来说有一下几个步骤:

创建docoerfile:

(1)在项目里新建一个名为Dockerfile的文件

编写Dockerfile:

#基础镜像
FROM openjdk:8-jre#发布到网上时只会把jar包和Dockerfile发布上去
# 把当前目录下的jar包拷贝进docker镜像里
COPY *.jar /ftdocker.jar#CMD命令用于指定这个容器启动的时候要运行的命令(CMD一行只执行一个命令,可以写多个CMD)
#地址映射
CMD ["--server.port=8088"]#对外暴露端口
EXPOSE 8088# ENTRYPOINT命令用于指定这个容器启动的时候要运行的命令(可以追加命令)
#执行命令
ENTRYPOINT ["java", "-Xmx512m", "-jar", "/ftdocker.jar"]

在服务器里的你想存放项目的位置新建文件夹,用于存放Java项目

把打包好的jar包和Dockerfile文件上传到服务器里

使用Dockerfile打包出一个docker镜像

  1. #选项及解释

  2. -t的t是tag,表示生成的镜像的名称和版本号

  3. .表示当前构建时上下文的路径为当前目录

  4. docker build -t todocker:0.1 .

效果图:

如果指定(FROM java:8),Jenkins构建服务,Dockerfile报错:manifest for java:8-jre not found: manifest unknown: manifest unknown

1、问题描述
Jenkins构建服务,控制台报错:

manifest for java:8-jre not found: manifest unknown: manifest unknown

1、截图:


2、解决问题
这是由于Docker官方已经弃用java8镜像,想使用jdk1.8的话,可以使用openjdk。
解决办法是,将Dockerfile改为 FROM openjdk:8-jre

FROM openjdk:8-jreRUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo "Asia/Shanghai" > /etc/timezoneARG JAR_FILE
COPY ${JAR_FILE} /app.jarENTRYPOINT ["java", "-Xmx512m", "-Djava.security.egd=file:/dev/./urandom", "-Ddruid.mysql.usePingMethod=false", "-jar", "/app.jar"]
CMD ["--spring.profiles.active=prod"]

使用以下命令查看镜像是否构建成功

docker images

效果图: 

使用以下命令利用我们新建的docker镜像来启动docker容器

#选项及解释
-d表示容器在后台运行
-P表示随机指定端口或者-p指定端口
--name="name"参数用于给容器取名字 ,用来区分容器
 
docker run -d -p 8012:8012 --name 容器名称 镜像名称:版本

效果图:

访问docker容器内的项目

(1)因为用-P参数随机指定了docker的端口来映射docker容器内的SpringBoot项目的8080端口,导致不知道docker随机指定的是哪个端口,所以使用以下命令查看随机指定的docker端口是什么(如果在启动docker容器时指定了端口可以不用进行这一步操作)

docker ps
效果图: 

(2)使用curl命令来访问docker容器内的SpringBoot项目,出现404的字眼,证明SpringBoot项目启动成功

curl localhost:docker随机指定的端口
效果图 

(3)使用curl命令调用SpringBoot项目的接口,发现能调用成功

curl localhost:docker随机指定的端口/接口路径
效果图: 

其他问题:

这个错是某个容器已经存在了 可以用下面命令进行停止 并删除 最后启动

docker stop name/image_id
docker rm name/image_id

通过标签删除镜像

通过如下两个都可以删除镜像:

docker rmi [image]

或者:

docker image rm [image]

强制删除:

docker rmi -f image_id

容器操作命令汇总: 参考链接

停止容器:
docker stop hello1
启动已经停止容器:
docker start hello1
进入容器:
docker exec -it hello1 /bin/bash
删除容器:
docker rm -f hello1
帮助命令:
docker --help

参考链接:链接1,链接2

相关文章:

Docker构建Springboot项目,并发布测试

把SpringBoot项目打包成Docker镜像有两种方案: 全自动化:先打好docker镜像仓库,然后在项目的maven配置中配置好仓库的地址,在项目里配置好Dockerfile文件,这样可以直接在idea中打包好后自动上传到镜像仓库&#xff0c…...

flutter架构全面解析

Flutter 是一个跨平台的 UI 工具集,它的设计初衷,就是允许在各种操作系统上复用同样的代码,例如 iOS 和 Android,同时让应用程序可以直接与底层平台服务进行交互。如此设计是为了让开发者能够在不同的平台上,都能交付拥…...

QHttpServer

QLineEdit-----输入提示 改动CmakeLists.txt 在帮助–索引查找QHttpServer 改动CmakeLists.txt&#xff0c;有三处改动 在谷歌浏览器测试&#xff0c;输入127.0.0.1/api/login 测试代码 #include<QCoreApplication> #include <QHttpServer> //http服务器 int m…...

21.3 CSS 背景属性

1. 背景颜色 background-color属性: 设置元素的背景颜色. 它可以接受各种颜色值, 包括命名颜色, 十六进制颜色码, RGB值, HSL值等.快捷键: bctab background-color:#fff;<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"…...

Ansible 常用命令50条

以下是 Ansible 常用的 50 条命令&#xff1a; ansible --version: 查看 Ansible 版本信息。ansible all -m ping: 检查所有主机的连通性。ansible-playbook playbook.yml: 运行指定的 Ansible Playbook 文件。ansible-doc module_name: 查看指定模块的帮助文档。ansible-conf…...

ceph源码阅读 erasure-code

1、ceph纠删码 纠删码(Erasure Code)是比较流行的数据冗余的存储方法&#xff0c;将原始数据分成k个数据块(data chunk)&#xff0c;通过k个数据块计算出m个校验块(coding chunk)。把nkm个数据块保存在不同的节点&#xff0c;通过n中的任意k个块还原出原始数据。EC包含编码和解…...

C++ 之 命名空间

namespace_百度百科&#xff0c;有示例...

MyBatis关系映射

文章目录 前言一、一对一映射1.1 创建实体1.2 xml配置 二、一对多映射2.1 创建实体2.2 resultMap配置2.3 测试 三、 多对多映射3.1 创建实体3.2 resultMap配置3.3 测试 前言 MyBatis是一个Java持久化框架&#xff0c;它提供了一种将数据库表和Java对象之间进行关系映射的方式。…...

DVWA失效的访问控制

失效的访问控制&#xff0c;可以认为是系统对一些功能进行了访问或权限限制&#xff0c;但因为种种原因&#xff0c;限制并没有生效&#xff0c;造成失效的访问控制漏洞,比如越权等 这里以DVWA为例&#xff0c;先访问低难度的命令执行并抓包 删除cookie&#xff0c;并在请求头…...

docker 笔记2 Docker镜像和数据卷

参考&#xff1a; 1.镜像是什么&#xff1f;&#xff08;面试题&#xff09; 是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文…...

java springboot 时间格式序列化 UTC8

背景 我们在项目中使用序列化和反序列化组件中&#xff0c;默认一般采用Jackson&#xff0c;如果遇到特殊配置&#xff0c;我们该怎么配置呢&#xff0c;大致有如下两种方式&#xff1a;采用配置文件【application.yml】和代码配置 配置文件 比如添加jackson节点 spring:jac…...

攻防世界-Get-the-key.txt

原题 解题思路 notepad看到&#xff0c;这应该是一个压缩包&#xff0c;解压。 但是解压的时候提示格式不对&#xff0c;不是zip&#xff0c;rar可以。解压出来有一个key.txt&#xff0c;打开就行。...

MyBatisPlus之DQL编程控制

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 MyBatisPlus之DQL编程控制 一、 条件查询方式&…...

本地使用GFPGAN进行图像人脸修复

人脸修复 1.下载项目和权重文件2.部署环境3.下载权重文件4.运行代码5.网页端体验 首先来看一下效果图 1.下载项目和权重文件 https://github.com/iptop/GFPGAN-for-Video.git2.部署环境 根据README文件部署好环境&#xff0c;额外还需要&#xff1a; cd GFPGAN-1.3.8 pyt…...

Linux--进程概念

1.什么是程序&#xff1f;什么是进程&#xff1f;有什么区别&#xff1f; 程序&#xff1a;是静态的概念&#xff0c;gcc xxx.c -o pro 磁盘中生成的pro文件&#xff0c;叫做程序。 进程&#xff1a;是程序的一种与运行活动&#xff0c;通俗的意思是程序跑起来了&#xff0c;系…...

dex2oat编译模式、触发场景、命令强制执行

dex2oat简单理解就是把delvik虚拟机的可执行文件dex转化成AndroidRuntime虚拟机的可执行文件oat。 Android T版本由PKMS下发命令、native层进程installd负责具体执行dex2oat操作。installd回去调用dex2oat64完成编译工作&#xff0c;可以将dex2oat64理解成一个程序。源码路径&…...

深度学习 | TCN时间卷积神经网络模型答疑

深度学习 | TCN时间卷积神经网络模型答疑 目录 深度学习 | TCN时间卷积神经网络模型答疑问题汇总问题回答参考资料问题汇总 1.使用 TCN 进行序列建模有哪些优势? 2.TCN 的特征? 问题回答 1.使用 TCN 进行序列建模具备以下优势: 并行性。与 RNN 中后继时间步长的预测必须等待…...

Linux之修改服务端口号

本次演示以SSH服务为例&#xff0c;SSH默认监听端口是22,先保留了22端口&#xff0c;所以我们要进入ssh的配置文件添加新端口并注释或删掉原有端口。 1、使用vi编辑器修改文件 sshd_config,路径是/etc/ssh/sshd_config,找到“#Port 22”,添加新的端口号10086。 2、如果你关闭了…...

LeetCode笔记:Weekly Contest 361

LeetCode笔记&#xff1a;Weekly Contest 361 0. 吐槽1. 题目一 1. 解题思路2. 代码实现 2. 题目二 1. 解题思路2. 代码实现 3. 题目三 1. 解题思路2. 代码实现 4. 题目四 1. 解题思路2. 代码实现 比赛链接&#xff1a;https://leetcode.com/contest/weekly-contest-361 0. …...

Springboot快速搭建Web API项目

内容概述 SpringBoot最常见得用途就是web api项目。 本文介绍使用自动配置功能&#xff0c;通过最简洁的pom依赖&#xff0c;快速搭建一个示例项目。 实现的功能为&#xff1a;接收http请求并返回json格式的数据。 一、配置pom.xml依赖 1.引入springweb依赖 <dependenc…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素&#xff0c;返回一个新的数组。 特点&#xff1a; 不修改原数组&#xff1a;slice 不会改变原数组&#xff0c;而是返回一个新的数组。提取数组的部分&#xff1a;slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...