(十四)、为 SpringCloud 项目生成 Docker 镜像

news2024/12/25 12:53:53

文章目录

    • 1、原理
    • 2、最佳实践
      • 2.1、获得 SpringCloud 微服务启动模块的 jar 文件
      • 2.2、准备文件夹和 Dockerfile 文件
      • 2.3、 Dockerfile 文件的内容
      • 2.4、通过命令行构件新镜像
    • 3、异常情况和处理:failed to create LLB definition
      • 3.1、现象
      • 3.2、解决
        • 配置国内镜像仓库
        • 清理本地不使用 docker 资源
        • 手动拉取镜像
        • 再次build
    • 4、运行
      • 4.1、简单运行
      • 4.2、使用 Docker Compose

1、原理

类似 借助 Dockerfile生成新镜像-以nginx为例 中,基于 Nginx 已有镜像,可以生成新的自定义镜像。
为 SpringCloud 项目生成自定义镜像的基础镜像是 Java jdk镜像,基于此,添加 SpringCloud 启动模块的 jar 包,生成一个新镜像

2、最佳实践

2.1、获得 SpringCloud 微服务启动模块的 jar 文件

参考 将一个 SpringCloud 微服务运行 以 jar 方式运行

2.2、准备文件夹和 Dockerfile 文件

  • 把 2.1 中获得的jar 放到该目录下
  • 创建 Dockerfile 文件

在这里插入图片描述

2.3、 Dockerfile 文件的内容

# 使用官方的Java运行时作为父镜像
FROM openjdk:8-jre-alpine

# 将当前目录下的可执行jar包复制到容器中的/app目录下
ADD bestcxx-starter.jar /app/bestcxx-starter.jar

# 声明容器运行时需要开放的端口
EXPOSE 8080

# 设置容器启动时执行的命令
ENTRYPOINT ["java", "-jar", "/app/bestcxx-starter.jar"]

2.4、通过命令行构件新镜像

在文件夹目录下打开命令行,执行命令

// . 表示 文件相对路径
`docker build -t bestcxx-starter:0.0.1 .

顺利的话,你可以在本地看到新生成了镜像了
在这里插入图片描述

3、异常情况和处理:failed to create LLB definition

3.1、现象

在文件夹目录下直接运行 docker build -t bestcxx-starter:0.0.1 . 控制台报错


➜  docker-bestcxx docker build -t bestcxx-starter:0.0.1 .
[+] Building 151.7s (3/3) FINISHED                                                
 => [internal] load build definition from Dockerfile                         0.0s
 => => transferring dockerfile: 606B                                         0.0s
 => [internal] load .dockerignore                                            0.0s
 => => transferring context: 2B                                              0.0s
 => ERROR [internal] load metadata for docker.io/library/openjdk:8-jre-al  151.6s
------
 > [internal] load metadata for docker.io/library/openjdk:8-jre-alpine:
------
failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed commit on ref "unknown-sha256:360132d4d86b72fa978fa16437fe9aed6127dba50dc64149bc0f50ab9bd8af99": "unknown-sha256:360132d4d86b72fa978fa16437fe9aed6127dba50dc64149bc0f50ab9bd8af99" failed size validation: 8175 != 7882: failed precondition

3.2、解决

这种原因是网络不好,可以使用命令行单独拉取镜像,然后再运行 build

配置国内镜像源&清理缓存&手动拉镜像&build

配置国内镜像仓库

Docketesktop->Docker Engine

"registry-mirrors": [
    "http://hub-mirror.c.163.com",
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://cr.console.aliyun.com",
    "https://mirror.ccs.tencentyun.com"
  ]
}
清理本地不使用 docker 资源
docker system prune -a //清理未使用的容器、镜像、网络和构建缓存。
docker system prune -a --volumes //在上述基础上还增加了对未使用的数据卷的清理。
手动拉取镜像
docker pull openjdk:8-jre-alpine
再次build
docker build -t bestcxx-starter:0.0.1 .

4、运行

4.1、简单运行

docker run -d -p 8877:8080 --name my_bestcxx_container bestcxx-starter:0.0.1

4.2、使用 Docker Compose

docker-compose up -d 运行

version: '3'

services:
  my_bestcxx_container:
    image: bestcxx-starter:0.0.1
    container_name: my_bestcxx_container
    ports:
      - "8877:8080"
    restart: always

在这里插入图片描述

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

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

相关文章

【Python报错已解决】 ModuleNotFoundError: No module named ‘tensorboard‘

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:使用pip安装TensorBoard…

vue3.0 使用echarts与echarts-gl 实现3D饼图

效果 安装echarts npm install echarts npm install echarts-gl 3d饼图组件&#xff1a; <template><div style"width: 100%; height: 100%" ref"echart"></div> </template><script setup> import { reactive, ref, onMou…

docker部署FastDFS文件系统详细记录,每个步骤都有详细记录。含linux和windows双系统安装教程

docker部署FastDFS文件系统详细记录 参考文章docker搭建FastDFS文件系统&#xff08;最详细版&#xff09; 文章里所有步骤由作者亲自测试&#xff0c;所以和 原文有不少差异 文章里所有步骤由作者亲自测试&#xff0c;所以和 原文有不少差异 文章里所有步骤由作者亲自测试&…

HTML + CSS - 网页布局之一般布局浮动布局

1. 一般布局 1.1 一般布局相关参数 元素内容常常可以想像为放在一个盒子里&#xff0c;然后在周边加上内边距&#xff0c;边框和外边距&#xff0c;是盒子模型 默认一个块级区域会填充父类所有的行向空间&#xff0c;并且沿着块伸长容纳其内容&#xff0c;可以为块状体设置某…

18、公司信贷管理|贷款额度的测算|贷款期限及其定价的设定逻辑!

银行在综合权衡贷款的第一还款来源和第二还款来源、风险和收益的基础上&#xff0c;应明确提出贷与不贷的意见。经调查审查同意的贷款&#xff0c;应提出最终的融资方案。 合理的融资方案既要有利于提升本行的竞争力&#xff0c;又要有利于控制贷款风险。完整的融资方案一般包…

苹果的“AI茅”之路只走了一半

今年苹果发布会最大的亮点&#xff0c;也许是和华为“撞档”&#xff0c;又或者是替腾讯“发布”新手游&#xff0c;但肯定不是iPhone 16。 9月10日&#xff0c;苹果秋季新品发布会与华为见非凡品牌盛典相继举行&#xff0c;iPhone 16系列也与HUAWEI Mate XT同日发布。 不过&…

性能测试-jmeter脚本录制(十五)

一、jmeter脚本录制&#xff08;不推荐&#xff09;简介&#xff1a; 二、jmeter脚本录制步骤 1、添加代理服务器和线程组 2、配置http代理服务器的端口和目标线程组 3修改本机浏览器代理 4、点击启动 5、每次操作页面前&#xff0c;修改提示文字

html 中如何使用 uniapp 的部分方法

示例代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><…

2024年,最新 OKR 优秀案例集(建议收藏)

我们发现&#xff0c;在你学习 OKR 的例子之前&#xff0c;先回顾一下 OKR 是如何写的&#xff0c;会有帮助。这样&#xff0c;你就能更好地理解下面描述的目标和关键结果的例子。 好消息是&#xff0c;Tita 的 OKR案例库有很多例子可以学习&#xff0c;它们从公司的 OKR 开始…

离散时域和连续频谱之间的傅里叶

要得到虚假的时域离散点&#xff0c;要用频域一个周期的积分

对接开源大模型应用开发平台最佳实践

本文以Dify为例介绍如何使用OpenSearch LLM智能问答版对接大模型应用开发平台构建RAG系统。 背景 随着AIGC技术日新月异的发展&#xff0c;LLM应用也在持续迭代。基于LLM、Agent框架、工作流编排能力等&#xff0c;可以搭建不同场景下丰富的应用服务。其中&#xff0c;检索增…

基于node.js koa2模拟快递柜存储取出快递微信小程序

本文介绍了一个基于Node.js Koa2框架的快递柜存储和取出快递的微信小程序。首先&#xff0c;我们使用Koa2框架搭建了一个简单的后端服务器&#xff0c;用于处理微信小程序发送的请求。然后&#xff0c;我们实现了快递柜的存储和取出功能&#xff0c;用户可以通过微信小程序扫描…

【包教包会】CocosCreator3.x拖尾MotionStreak威力加强版(支持3.x、支持原生、可合批)

将去年写的2.x拖尾升级到3.x 完美适配Web、原生平台&#xff08;其余平台没测过&#xff09;。 保留原版功能&#xff08;拖尾会跟随节点位移、缩放、受节点透明度影响&#xff0c;但不会跟随节点旋转&#xff09; 支持世界坐标 / 本地坐标切换&#xff08;至于为什么需要这…

中国老年社会追踪调查(2011-2020年)

中国老年社会追踪调查&#xff08;CLASS&#xff09;是一项全国性、连续性、系统性、长期性的社会调查项目&#xff0c;它通过定期、系统地收集中国老年人群的社会、经济背景数据&#xff0c;以掌握老年人在衰老过程中面临的各种问题和挑战。这些数据评估了各项社会政策措施在提…

精通PostgreSQL:解锁高效数据库管理的十大必备技巧与最佳实践

作者简介&#xff1a;我是团团儿&#xff0c;是一名专注于云计算领域的专业创作者&#xff0c;感谢大家的关注 座右铭&#xff1a; 云端筑梦&#xff0c;数据为翼&#xff0c;探索无限可能&#xff0c;引领云计算新纪元 个人主页&#xff1a;团儿.-CSDN博客 目录 前言&#…

Leetcode 109.有序链表转换二叉搜索树(Medium)

给定一个单链表的头节点 head &#xff0c;其中的元素 按升序排序 &#xff0c;将其转换为 平衡 二叉搜索树。 示例 1: 输入: head [-10,-3,0,5,9] 输出: [0,-3,9,-10,null,5] 解释: 一个可能的答案是[0&#xff0c;-3,9&#xff0c;-10,null,5]&#xff0c;它表示所示的高度…

uni如何安装新依赖

如何在 uniapp 项目中&#xff0c;使用“插件市场” 的原生插件 插件市场 :DCloud 插件市场 1. 第一步&#xff1a; 首先在HBuilder x 中新建一个uniapp 项目&#xff0c;如果已建好 uniapp 项目则跳过该步骤。 2.第二步&#xff1a; 在 ”插件市场中 “ 选择你需要的原生插件…

微服务实战系列之玩转Docker(十四)

前言 时逢白露天骤变&#xff0c;细雨纷纷气渐凉&#xff0c;忽有故人心上过&#xff0c;回首山河已是秋。——碎碎念 当秋天来临的那一刻&#xff0c;你会想起故人么&#xff1f;此刻&#xff0c;突然一句唐诗——“故人具鸡黍&#xff0c;邀我去田家”&#xff0c;飘过了耳边…

CAN通信入门 - 1

CAN通信入门 - 1 CAN通信原理 参考链接&#xff1a;CAN总线原理 CAN总线信号为差分信号&#xff0c;其有2根总线分别为CAN-L\CAN-H。 CAN总线之间的电平分为显性电平和隐性电平&#xff0c;其中显性电平对应的是逻辑0&#xff0c;隐性电平对应的是逻辑1。当CAN差分信号为0V时…

【Web】骨架屏

文章目录 概述骨架屏的实现方案page-skeleton-webpack-plugin安装基本使用 来源 概述 骨架屏&#xff08;Skeleton Screen&#xff09;是一种在页面数据加载完成前&#xff0c;先给用户展示出页面的大致结构&#xff08;灰色占位图&#xff09;的技术。当页面实际数据加载并渲…