SpringBoot项目部署(Docker)——通过Dockerfile将打包好的jar包创建成镜像 在IDEA中配置docker,一键启动容器 用swagger进行测试

目录

  • 引出
  • SpringBoot项目部署(jar包)
  • Dockefile初识
  • idea配置docker
    • 在Linux中配置docker remote api
    • 配置idea docker插件
  • 部署项目Springboot整合Dockerfile
    • 准备项目
    • 创建Dockerfile文件
    • 进行测试
  • 总结

引出


1.Dockerfile命令初识,CMD…;
2.idea配置docker,图形化界面;
3.编写Dockerfile把jar包制作成镜像,并用idea一键生成和启动容器;
4.在Linux中测试,在宿主机用swagger进行测试;

SpringBoot项目部署(jar包)

SpringBoot项目部署(jar包)——项目用maven打包成jar包 & windows + Linux平台运行 & Linux安装java & 遇到的问题

在这里插入图片描述

Dockefile初识

在这里插入图片描述

Docker是一个开源的应用容器引擎,开发者可以打包自己的应用到容器里面,然后迁移到其他机器的docker应用中,可以实现快速部署。Docker利用容器(Container)来运行应用。容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。Docker的主要概念包括镜像和容器。

其中,Images(镜像)是一个只读模板,含创建Docker容器的说明,它与操作系统的安装光盘有点像。Containers(容器)是镜像的运行实例,镜像与容器的关系类比面向对象中的类和对象。Docker镜像通过Dockefile文件构建,文件中包含指定的基础镜像、运行命令等

在这里插入图片描述

在这里插入图片描述

FROM:指定创建镜像的基础镜像

MAINTAINER:Dockerfile作者信息,一般写的是联系方式

RUN:运行Linux系统的命令使用

CMD:指定容器启动执行的命令;启动容器中的服务

LABEL:指定生成镜像的源数据标签

EXPOSE:指定镜像容器监听端口号;发布服务使用

ENV:使用环境变量

ADD:对压缩文件进行解压缩;将数据移动到指定的目录

COPY:复制宿主机数据到镜像内部使用

WORKDIR:切换到镜像容器中的指定目录中

VOLUME:挂载数据卷到镜像容器中

USER:指定运行容器的用户

ARG:指定构建运行时参数

ONBUILD:创建镜像,作为其他镜像的基础镜像运行操作指令

ENTRYPOINT:指定运行容器启动过程执行命令,覆盖CMD参数

idea配置docker

在Linux中配置docker remote api

配置docker.service 让linux开放Docker Remote API。

查询配置文件位置

systemctl show —property=FragmentPath docker

在这里插入图片描述

[root@localhost ~]# systemctl show --property=FragmentPath docker
FragmentPath=/usr/lib/systemd/system/docker.service
[root@localhost ~]# cat /usr/lib/systemd/system/docker.service

在这里插入图片描述

使用vim编辑此文件

[root@localhost ~]# vim /usr/lib/systemd/system/docker.service
 ExecStart=/usr/bin/dockerd-current -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 \

在这里插入图片描述

修改语句

ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
ExecStart=/usr/bin/dockerd-current -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 \--add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \--default-runtime=docker-runc \--exec-opt native.cgroupdriver=systemd \--userland-proxy-path=/usr/libexec/docker/docker-proxy-current \--init-path=/usr/libexec/docker/docker-init-current \--seccomp-profile=/etc/docker/seccomp.json \$OPTIONS \$DOCKER_STORAGE_OPTIONS \$DOCKER_NETWORK_OPTIONS \$ADD_REGISTRY \$BLOCK_REGISTRY \$INSECURE_REGISTRY \$REGISTRIES
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
KillMode=process
[Install]
WantedBy=multi-user.target

在这里插入图片描述

重载配置文件

[root@localhost ~]# systemctl daemon-reload

重启docker

[root@localhost ~]# systemctl  restart docker

测试2375端口

[root@localhost ~]# netstat -nplt|grep 2375
tcp6       0      0 :::2375                 :::*                    LISTEN      30524/dockerd

在这里插入图片描述

linux开放2375端口

在这里插入图片描述

[root@localhost ~]# firewall-cmd --zone=public --list-ports
8000/tcp 445/tcp 8848/tcp 8080/tcp 
[root@localhost ~]# firewall-cmd --zone=public --add-port=2375/tcp --permanent
success
[root@localhost ~]# firewall-cmd --reload 
success
[root@localhost ~]# firewall-cmd --zone=public --list-ports
8000/tcp 445/tcp 8848/tcp 8080/tcp 2375/tcp

测试配置

curl localhost:2375/info

在这里插入图片描述

配置idea docker插件

1.打开settings—>docker

在这里插入图片描述

docker下点击加号

在这里插入图片描述

在这里插入图片描述

2.配置docker插件

在这里插入图片描述

3.在Services中会出现Docker选项。

在这里插入图片描述

4.选中Docker图标,鼠标左键双击会显示容器中的内容。

在这里插入图片描述

部署项目Springboot整合Dockerfile

准备项目

package com.tianju.jpa.controller;import com.tianju.jpa.entity.Car;
import com.tianju.jpa.service.ICarService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@Api(tags = "查询所有汽车的api接口类")
@RestController
@RequestMapping("/api/car")
public class CarController {@Autowiredprivate ICarService carService;@ApiOperation("findAll查询所有车的测试")@GetMapping("/findAll")public List<Car> findAll(){List<Car> all = carService.findAll();System.out.println(all);return all;}
}

在这里插入图片描述

打包成jar包

在这里插入图片描述

创建Dockerfile文件

#使用java环境,anapsix/alpine-java:latest java环境的镜像
FROM anapsix/alpine-java:latest
# 项目的端口,内部服务端口
EXPOSE 9089
# 切换到容器内部的 /workdir目录
WORKDIR /workdir# 添加要运行的jar文件
COPY target/spring-boot-jpa-1.0-SNAPSHOT.jar /workdir/JpaApp.jar# 容器启动后运行的命令
ENTRYPOINT ["java","-jar","/workdir/JpaApp.jar"]

在这里插入图片描述

参数设置

在这里插入图片描述

在这里插入图片描述

设置 host与docker容器绑定的端口号

在这里插入图片描述

镜像名,容器名

在这里插入图片描述

运行创建镜像和容器

在这里插入图片描述

镜像创建成功

在这里插入图片描述

Deploying 'springboot-jpa Dockerfile: DockerFile'��
Building image��
Preparing build context archive��
[==================================================>]86/86 files
DoneSending build context to Docker daemon��
[==================================================>] 50.11MB
DoneStep 1/5 : FROM anapsix/alpine-java:latest---> c45785c254c5
Step 2/5 : EXPOSE 9089---> Running in 339c0fb340d8---> f68047af49d2
Removing intermediate container 339c0fb340d8
Step 3/5 : WORKDIR /workdir---> 5e761fdb7189
Removing intermediate container 304cf8219b25
Step 4/5 : COPY target/spring-boot-jpa-1.0-SNAPSHOT.jar /workdir/JpaApp.jar---> 4df14839f1d1
Removing intermediate container df30a130b405
Step 5/5 : ENTRYPOINT java -jar /workdir/JpaApp.jar---> Running in 96797fd1ee7a---> 2f339789e889
Removing intermediate container 96797fd1ee7a
Successfully built 2f339789e889
Creating container��
Container Id: a773c3ea278c6a56666d3a8253fd471c36bd8c4abf430a617cfdbb395eda0725
Container name: 'springboot-jpa'
Starting container 'springboot-jpa'
'springboot-jpa Dockerfile: DockerFile' has been deployed successfully.

容器运行成功

在这里插入图片描述

端口启动成功

在这里插入图片描述

进行测试

linux服务器测试(docker容器装在此服务器) : curl url

 curl 192.168.111.130:9089/api/car/findAll

在这里插入图片描述

从外部访问容器。

http://192.168.111.130:9089/doc.htm

在这里插入图片描述


总结

1.Dockerfile命令初识,CMD…;
2.idea配置docker,图形化界面;
3.编写Dockerfile把jar包制作成镜像,并用idea一键生成和启动容器;
4.在Linux中测试,在宿主机用swagger进行测试;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/600091.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Fiddler抓取HTTPS最全(强)攻略

对于想抓取HTTPS的测试初学者来说&#xff0c;常用的工具就是fiddler。可是在初学时&#xff0c;大家对于fiddler如何抓取HTTPS真是伤了脑筋&#xff0c;可能你一步步按着网上的帖子成功了&#xff0c;那当然是极好的。 有可能没有成功&#xff0c;这时候你就很抓狂了&#xff…

Unity3D Shader 之透视效果XRay

1、 Shader "Unlit/XRay" {Properties{_MainTex("Texture", 2D) "white" {}// 漫反射_Diffuse("Diffuse", COLOR) (1,1,1,1)// XRay 效果_XRayColor("XRay Color", COLOR) (0,1,1,1)_XRayPower("XRay Power",…

Mysql 将表里的两列值数据互换

示例&#xff1a; 需要将表中的 两个订单号互换 方案&#xff1a; 将同一张表数据做 临时数据 和主表 做数据交互 。 update 表 as main, 表 as temp set main.bill_no temp.track_bill_no, main.track_bill_no temp.bill_no where main.id temp.id…

新手小白如何搭建自己的服务器

由于近期六年前的域名到期了&#xff0c;阿里云的客服电话&#xff0c;正好提醒了我需要管理下这方面的东西&#xff0c; 正好看到阿里云的服务器99/年&#xff0c;而且可以原价续费两年&#xff0c;截止日期为2026年3月&#xff0c;所以我还是剁手了。 借着这次机会写一部分建…

分布式(7)

目录 31.基于Zookeeper如何实现分布式锁&#xff1f; 32.什么是ACID&#xff1f; 33.什么是分布式的XA协议&#xff1f; 34.什么是2PC&#xff1f; 35.什么是3PC&#xff1f; 31.基于Zookeeper如何实现分布式锁&#xff1f; 顺序节点 创建一个用于发号的节点“/test/lock…

应用在游戏机触摸屏中的触摸感应芯片

触屏游戏机的屏幕是由液晶屏和触控层组成的。触控层分为电容式触屏和电阻式触屏两种。电容式触屏是将悬空电极和屏幕玻璃上的电极组成静电场,当人体接近屏幕时,就会改变静电场分布,从而实现触摸的位置探测。而电阻式触屏则是利用玻璃上的两层电极之间通电形成一个电阻值,当手指…

【python入门】day19:学生管理系统需求分析、系统设计、主函数设计

需求分析 应具备功能—— 添加学生及成绩信息&#xff1b; 将学生信息保存到文件中&#xff1b; 修改和删除学生信息&#xff1b; 查询学生信息&#xff1b; 根据学生成绩进行排序&#xff1b; 统计学生的总分 系统设计 1.录入学生信息模块 2.查找 3.删除 4.修改 5.成绩排名…

数据分析求职-简历准备

简历在整个求职过程中的重要性不言而喻&#xff0c;今天咱们来聊求职过程中简历准备的那些事儿~ 1. 简历究竟有啥用 求职的流程简单说就是&#xff1a;网申->笔试->面试->offer 其中网申环节&#xff0c;简历100%决定了你的通过与否&#xff0c;这个点大家都知道。…

计算机Java项目|Springboot+vue 学生心理咨询评估系统

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、Python项目、前端项目、人工智能与大数据、简…

数据结构入门到入土——ArrayList与顺序表

目录 一&#xff0c;线性表 二&#xff0c;顺序表 1.接口实现 三&#xff0c;ArrayList简介 四&#xff0c;ArrayList使用 1.ArrayList的构造 2.ArrayList常见操作 3.ArrayList的遍历 4.ArrayList的扩容机制 五&#xff0c;ArrayLisit的具体使用 杨辉三角 一&#x…

linux 使用log4cpp记录项目日志

为什么要用log4cpp记录项目日志 在通常情况下&#xff0c;Linux/UNIX 每个程序在开始运行的时刻&#xff0c;都会打开 3 个已经打开的 stream. 分别用来输入&#xff0c;输出&#xff0c;打印错误信息。通常他们会被连接到用户终端。这 3 个句柄的类型为指向 FILE 的指针。可以…

【保研记录】2023年(24届)SE上岸经历

先开个坑&#xff0c;慢慢填~ 个人信息 学校&#xff1a;某双非 专业&#xff1a;软件工程 第四轮学科评估&#xff1a;无&#xff08;对就是没有等级&#xff09; 排名&#xff1a;1/400 竞赛/荣誉&#xff1a;国奖x2&#xff0c;省三好&#xff0c;大英国二&#xff0c;…

视频剪辑方法:一键批量转码,视频转GIF教程详解

在数字媒体时代&#xff0c;视频剪辑已经成为一项必备技能。无论是专业人士还是普通用户&#xff0c;都要对视频进行剪辑、转码和制作。但是视频剪辑并不简单&#xff0c;要掌握一定的技巧和知识。下面一起来看云炫AI智剪简单易学的视频剪辑方法&#xff1a;一键批量转码和视频…

案例093:基于微信小程序的南宁周边乡村游设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

【MATLAB】【数字信号处理】线性卷积和抽样定理

已知有限长序列&#xff1a;xk1,2,1,1,0,-3, hk[1,-1,1] , 计算离散卷积和ykxk*h(k) 。 程序如下&#xff1a; function [t,x] My_conv(x1,x2,t1,t2,dt) %文件名与函数名对应 %自写的卷积函数 x conv(x1,x2)*dt; t0 t1(1) t2(1); L length(x1) length(x2)-2; t t0:dt…

thinkphp6入门(14)-- 多关联模型查询

背景&#xff1a; 有3个数据表&#xff0c;一个User表&#xff0c;一个Cloth表&#xff0c;一个Shoe表。 Cloth表和Shoe表分别和User表通过user_id关联。 thinkphp 6中如何通过模型查询所有用户&#xff0c;其中包括每个用户的cloth和shoe。 多关联模型查询&#xff1a; 1.…

Qt6学习笔记:对象树

使用QObject及其子类创建的对象是以对象树的形式来组织的。创建一个QObject对象时若设置一个父对象&#xff0c;它就会被添加到父对象的子对象列表里&#xff0c;一个父对象被删除时&#xff0c;其全部的子对象都会自动删除。QObject类的构造函数里有一个参数用于设置对象的父对…

CommonJS 和 ES6 Module:一场模块规范的对决(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

python 数据容器

数据容器概念 一个可以存储多个元素的python数据类型 python有的数据容器 list(列表) tuple(元组) str(字符串) set(集合) dct(字典) 列表 python的列表的数据类型可以是不同的 my_list ["1",123,True,[123,"3333",d,False]]for item in my_list:p…

【uniapp】多规格选择

效果图 VUE <template> <view><view class"wp-80 pd-tb-40 mg-auto"><button type"warn" click"showDrawer(showRight)">筛选</button></view><!-- 筛选-uni-drawer --><uni-drawer ref"s…