12-Docker发布微服务

12-Docker发布微服务

Docker发布微服务

搭建SpringBoot项目

  • 新建一个SpringBoot项目

image-20241030001910004

  • 选择依赖项Spring WebSpring Boot Actuator

image-20241030002221969

  • com.qi.docker_boot下创建controller目录,并在该目录下创建OrderController的java类

image-20241030002441466

  • OrderControllerjava类的内容如下:
package com.qi.docker_boot.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;import java.util.UUID;
/*** @ClassName OrderController* @Description TODO* @Author Bowen* @Date 2024/10/30 0:01* @Version 1.0**/
@RestController
public class OrderController {@Value("${server.port}")private String port;@RequestMapping("/order/docker")public String helloDocker() {return "hello world \t" + port + "\t" + UUID.randomUUID().toString();}@RequestMapping(value = "/order/index", method = RequestMethod.GET)public String index() {return "服务端口号:" + "\t" + port + "\t" + UUID.randomUUID().toString();}
}
  • 修改pom.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.qi</groupId><artifactId>docker_boot</artifactId><version>0.0.1-SNAPSHOT</version><name>docker_boot</name><description>docker_boot</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.6.13</spring-boot.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.qi.docker_boot.DockerBootApplication</mainClass><skip>false</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>
  • 修改配置文件application.properties
# 应用服务 WEB 访问端口
server.port=6001
  • 查看主启动类(自动生成的)
package com.qi.docker_boot;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class DockerBootApplication {public static void main(String[] args) {SpringApplication.run(DockerBootApplication.class, args);}}
  • 在IDEA中运行并查看

image-20241030003035295

  • 查看Web端

http://127.0.0.1:6001/order/docker

image-20241030003132966

http://127.0.0.1:6001/order/index

image-20241030003156051

在IDEA中运行没有问题时,将其使用maven的package打成jar包

image-20241030003413430

发布微服务项目到Docker容器

  • 将项目jar包上传到服务器

  • 编写Dockerfile

FROM openjdk:8
MAINTAINER qi# 在主机 /var/lib/docker目录下创建一个临时文件,并链接到容器的 /tmp
VOLUME /tmp# 将jar包添加到容器中,并命名为 springboot_docker.jar
ADD docker_boot-0.0.1-SNAPSHOT.jar /springboot_docker.jar
# 运行jar包
RUN bash -c 'touch /springboot_docker.jar'
ENTRYPOINT ["java", "-jar", "/springboot_docker.jar"]# SpringBoot项目配置的端口号为6001,需要将6001暴露出去
EXPOSE 6001
  • 构建镜像
docker build -t springboot_docker:1.0 .
  • 启动容器
docker run -d -p 6001:6001 --name springboot springboot_docker:1.0

image-20241030210817825

查看Web

http://192.168.149.142:6001/order/docker

image-20241030211957377

http://192.168.149.142:6001/order/index

image-20241030212019297

http://ip:6001/order/index中的ip使用ifconfig查找

你可能会遇到以下问题:

jdk8无法pull

错误代码

image-20241030211130109

[root@docker spring-docker]# docker build -t springboot_docker:1.0 .
[+] Building 63.3s (2/2) FINISHED                                                                                                                   docker:default=> [internal] load build definition from Dockerfile                                                                                                          0.0s=> => transferring dockerfile: 558B                                                                                                                          0.0s=> ERROR [internal] load metadata for docker.io/library/openjdk:8-oracle                                                                                    63.2s
------> [internal] load metadata for docker.io/library/openjdk:8-oracle:
------
Dockerfile:1
--------------------1 | >>> FROM openjdk:8-oracle2 |     MAINTAINER qi3 |     
--------------------
ERROR: failed to solve: openjdk:8-oracle: failed to do request: Head "https://registry.hub.docker.com/v2/library/openjdk/manifests/8-oracle?ns=docker.io": dial tcp 65.49.26.97:443: connect: connection refused
解决方案

使用代理下载

image-20241030211225607

成功下载示例

image-20241030211343586

jar包无法启动

错误代码
docker_boot-0.0.1-SNAPSHOT.jar中没有主清单属性
解决方法

更改pom.xml文件,然后重新构建即可

image-20241030211822813

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【大语言模型】ACL2024论文-06 探索思维链COT在多模态隐喻检测中的应用

【大语言模型】ACL2024论文-06 探索思维链COT在多模态隐喻检测中的应用 目录 文章目录 【大语言模型】ACL2024论文-06 探索思维链COT在多模态隐喻检测中的应用目录摘要研究背景问题与挑战如何解决创新点算法模型1. 知识总结模块&#xff08;Knowledge Summarization Module&…

HTML CSS

目录 1. 什么是HTML 2. 什么是CSS ? 3. 基础标签 & 样式 3.1 新浪新闻-标题实现 3.1.1 标题排版 3.1.1.1 分析 3.1.1.2 标签 3.1.1.3 实现 3.1.2 标题样式 3.1.2.1 CSS引入方式 3.1.2.2 颜色表示 3.1.2.3 标题字体颜色 3.1.2.4 CSS选择器 3.1.2.5 发布时间字…

应用在汽车控制系统安全气囊的爱普生可编程晶振SG-8018CG

在汽车安全领域&#xff0c;安全气囊是保护驾乘人员生命安全的关键防线。而作为安全气囊控制系统的关键元件 —— 爱普生可编程晶振 SG - 8018CG&#xff0c;以其卓越的性能成为汽车安全的坚实守护者。 一、高精度频率输出&#xff1a;安全气囊触发的精准之选 在汽车安全气囊控…

第112届全国糖酒会(3月成都)正式官宣!

作为食品饮料行业内备受瞩目的年度盛事&#xff0c;全国糖酒商品交易会&#xff08;简称“糖酒会”&#xff09;一直是各大厂商与经销商展现企业风采、寻觅合作伙伴及签署订单的关键舞台。2024年10月31日&#xff0c;第111届全国糖酒商品交易会&#xff08;秋糖&#xff09;在深…

【Javaee】网络原理-http协议(二)

前言 上一篇博客初步介绍了抓包工具的安装及使用&#xff0c;介绍了http请求报文与响应报文的格式。​​​​​​【Javaee】网络原理—http协议&#xff08;一&#xff09;-CSDN博客 本篇将详细介绍http的方法和http报文中请求头内部键值对的含义与作用&#xff0c;以及常见状…

Python实现摇号系统:详细指南与案例解析

目录 一、摇号系统的基本概念与原理 二、摇号系统的准备工作 三、摇号系统的详细实现步骤 1. 数据读取 2. 随机摇号 3. 结果存储 4. 结果查询 5. 主函数 四、案例解析 五、常见问题与解答 如何确保摇号过程的公平性&#xff1f; 如何处理大量用户数据&#xff1f; …

python将数据集中所有文件名升序制作txt文件(医学影像)

import os import re # 设定图像文件所在的路径 img_path ./2d/images/ #需修改路径 # 获取该路径下的所有文件名 img_list os.listdir(img_path) # 过滤出以.nii结尾的文件名 nii_list [f for f in img_list if f.endswith(.nii)] # 使用正则表达式从文件名中提…

Stable diffusion 3.5本地运行环境配置记录

1.环境配置 创建虚环境 conda create -n sd3.5 python3.10Pytorch(>2.0) conda install pytorch2.2.2 torchvision0.17.2 torchaudio2.2.2 pytorch-cuda12.1 -c pytorch -c nvidiaJupyter能使用Anaconda虚环境 conda install ipykernel python -m ipykernel install --user …

2001-2023年A股上市公司数字化转型数据(MDA报告词频统计)(三种方法)

2001-2023年A股上市公司数字化转型数据&#xff08;MD&A报告词频统计&#xff09;&#xff08;三种方法&#xff09; 1、时间&#xff1a;2001-2023年 2、来源&#xff1a;上市公司MD&A报告 3、指标&#xff1a;年份、股票代码、股票简称、行业名称、行业代码、MD&a…

【力扣专题栏】字母异词分组,如何利用强大的容器(unordered_map)解决该问题?

题解目录 1、题目描述解释2、算法原理解析3、代码编写 1、题目描述解释 2、算法原理解析 3、代码编写 class Solution { public:vector<vector<string>> groupAnagrams(vector<string>& strs) {//创建哈希表unordered_map<string,vector<string&g…

基于python的语音识别与蓝牙通信的温控系统毕设项目

基于python的语音识别与蓝牙通信的温控系统毕设项目 大家好&#xff0c;我是俊星学长&#xff0c;一名在 Java 圈辛勤劳作的码农。今日&#xff0c;要和大家分享的是一款基于python的语音识别与蓝牙通信的温控系统毕设项目。项目源码以及部署相关事宜&#xff0c;请联系小村学…

MySQL第四次作业

一、题目要求 二、创建相关的数据库和表以及表的处理 1. 修改student 表中年龄(sage)字段属性&#xff0c;数据类型由int 改变为smallint 2.为Course表中Cno 课程号字段设置索引,并查看索引 3.为SC表建立按学号(sno)和课程号(cno)组合的升序的主键索引&#xff0c;索引名为SC_I…

Docker-安装

操作系统&#xff1a;Ubuntu 20.04.6 LTS 更新apt sudo apt update 删除旧版本docker sudo apt-get remove docker docker-engine docker.io 安装docker sudo apt install docker.io 查看docker版本 docker --version 启动docker 启动docker sudo systemctl start docker 启用…

Elasticsearch 安装教程:驾驭数据海洋的星际导航仪

目录 一、准备工作1. ES的下载 二、安装步骤三、注意事项四、启动报错1. org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root2. max virtual memory areas vm.max_map_count [65530] is too low, increase to at l…

SparkSQL整合Hive后,如何启动hiveserver2服务

当spark sql与hive整合后&#xff0c;我们就无法启动hiveserver2的服务了&#xff0c;每次都要先启动hive的元数据服务&#xff08;nohup hive --service metastore&#xff09;才能启动hive,之前的beeline命令也用不了&#xff0c;hiveserver2的无法启动&#xff0c;这也导致我…

【网络安全】揭示 Web 缓存污染与欺骗漏洞

未经许可,不得转载。 文章目录 前言污染与欺骗Web 缓存污染 DoS1、HTTP 头部超大 (HHO)2、HTTP 元字符 (HMC)3、HTTP 方法覆盖攻击 (HMO)4、未键入端口5、重定向 DoS6、未键入头部7、Host 头部大小写规范化8、路径规范化9、无效头部 CP-DoS10、HTTP 请求拆分Web 缓存污染与有害…

网络自动化01:netmiko基础、netmiko简单demo

本系列应该是记录我在网络自动化中的学习、使用。具体更新多少期、什么频率都不太清楚。 同时本文的记录方式不会是那么的符合学习的思路&#xff0c;需要更加详细的内容建议阅读官方文档等。 本人学习的路径是基于九净老师的NetDevOps加油站&#xff0c;但本文有所简化&#x…

一篇文章理解CSS垂直布局方法

方法1&#xff1a;align-content: center 在 2024 年的 CSS 原生属性中允许使用 1 个 CSS 属性 align-content: center进行垂直居中。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewpo…

上海亚商投顾:沪指缩量调整 华为概念股午后爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 市场全天震荡调整&#xff0c;沪指、深成指午后跌超1%&#xff0c;创业板指一度跌逾2%&#xff0c;尾盘跌幅有…

近百万奖金!2024 Web3.0 创新大赛重磅来袭!

10月30日&#xff0c;中国互联网协会与香港Web3.0协会共同组织举办的2024 Web3.0 创新大赛在上海举行启动会&#xff0c;宣布大赛正式在DataFountain竞赛平台&#xff08;简称DF平台&#xff0c;http://www.datafountain.cn&#xff09;启动上线。 大赛面向社会各界征集参赛团队…