Docker部署springcloud项目(清晰明了)

这篇具有很好参考价值的文章主要介绍了Docker部署springcloud项目(清晰明了)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

最近在想做个cloud项目,gitee上找了个模板项目,后端使用到 Nacos、Gateway、Security等技术,需要到 Docker 容器部署,在此总结一下,若有不足之处,望大佬们可以指出。

什么是 Docker

Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器

Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。

Docker的三大核心概念镜像、容器、仓库

  • 镜像:类似虚拟机的镜像、用俗话说就是安装文件。
  • 容器:类似一个轻量级的沙箱,容器是从镜像创建应用运行实例,可以将其启动、开始、停止、删除、而这些容器都是相互隔离、互不可见的。
  • 仓库:类似代码仓库,是Docker集中存放镜像文件的场所。

部署Spring Cloud项目

实现流程

Docker部署springcloud项目(清晰明了)

Maven 打包插件

  • maven-jar-plugin:打包不会把依赖库给打包进去,解压开里面会发现少了lib(只包括当前模块的jar,不包含依赖jar,无法直接启动)。
  • spring-boot-maven-plugin:会把依赖库一起打包进jar包

我目前项目中配置

<build>
        <!-- 项目名 -->
		<finalName>${project.artifactId}</finalName>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
			<!--跳过测试-->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<skipTests>true</skipTests>
				</configuration>
			</plugin>
		</plugins>
		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<filtering>true</filtering>
			</resource>
		</resources>
	</build>

Linux 中 jar 包分布
Docker部署springcloud项目(清晰明了)
Docker部署springcloud项目(清晰明了)

System 模块

Docker部署springcloud项目(清晰明了)

Dockerfile

FROM java:8

MAINTAINER lanys

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone

#添加jar包到容器中
ADD maku-cloud-system.jar  maku-cloud-system.jar

#暴露端口
EXPOSE 8081

ENTRYPOINT ["java", "-server", "-Xms512M", "-Xmx512M", "-Djava.security.egd=file:/dev/./urandom", "-Dfile.encoding=UTF-8", "-XX:+HeapDumpOnOutOfMemoryError", "-jar", "maku-cloud-system.jar" ]

生成镜像

格式:

# docker build -t 镜像名称:版本 .
docker build -t makunet_system:1.0 .

Gateway

Docker部署springcloud项目(清晰明了)

Dockerfile

# 构建镜像,执行命令:【docker build -t makunet:1.0 .】

# 网关 docker build -t makunet_gateway:1.0 .
# 后台 docker build -t makunet_system:1.0 .
# 启动compost docker-compose up -d
FROM java:8

MAINTAINER lanys

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone

#添加jar包到容器中
ADD maku-cloud-gateway.jar  maku-cloud-gateway.jar

#暴露端口
EXPOSE 8080

ENTRYPOINT ["java", "-server", "-Xms512M", "-Xmx512M", "-Djava.security.egd=file:/dev/./urandom", "-Dfile.encoding=UTF-8", "-XX:+HeapDumpOnOutOfMemoryError", "-jar", "maku-cloud-gateway.jar" ]

生成镜像

docker build -t makunet_gateway:1.0 .

查看生成效果

 docker images

Docker部署springcloud项目(清晰明了)

docker-compose.yml

Docker部署springcloud项目(清晰明了)

version: '3.9'
services:
  # 服务定义名称
  maku-cloud-gateway:
    # 指定镜像名称
    image: makunet_gateway:1.0
    # 指定运行服务名称,就是上面
    container_name: maku-cloud-gateway
    # 暴露端口
    ports:
      - 8080:8080
    # 挂载解析
    volumes:
      - /work/www/maku-cloud/maku-cloud-gateway.jar:/app/app.jar
  # 服务定义名称
  maku-cloud-system:
    # 指定镜像名称
    image: makunet_system:1.0
    container_name: maku-cloud-system
    volumes:
      - /work/www/maku-cloud/maku-cloud-system.jar:/app/app.jar

启动 docker-compose.yml

查看启动是否正常(测试):

compost docker-compose up

启动挂载:

compost docker-compose up -d

开放端口及实现效果

Docker部署springcloud项目(清晰明了)
Docker部署springcloud项目(清晰明了)

拓展

指定 yml 文件配置

Spring Cloud yml 配置文件 一般需要指定 Nacos 中的对应 测试环境(test)、生产环境(prod)需要在 docker-compose.yml 中设置compose变量文章来源地址https://www.toymoban.com/news/detail-462419.html

docker-compose.yml

maku-cloud-gateway:
    image: makunet:1.0
    container_name: maku-cloud-gateway
    ports:
      - 8080:8080
    # 设置环境变量
    env_file:
      // 指定当前目录下的 app.env 文件
      - app.env
    volumes:
      - /work/www/maku-cloud/maku-cloud-gateway.jar:/app/app.jar

app.env

nacos_host=8.134...
nacos_port=88..
nacos_namespace=53b571a0-08c7-4a2d-b094-32dc....
nacos_group=test
activated_properties=test

bootstrap.yml

server:
  port: 8081

spring:
  application:
    name: maku-cloud-system
  profiles:
    active: ${nacos_group:"dev"}
  cloud:
    nacos:
      discovery:
        server-addr: ${nacos_host:127.0.0.1}:${nacos_port:8848}
        # 命名空间,默认:public
        namespace: ${nacos_namespace:}
        service: ${spring.application.name}
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        namespace: ${spring.cloud.nacos.discovery.namespace}
        file-extension: yaml
        # 指定配置
        extension-configs:
          - data-id: datasour...yaml
            refresh: true
          - data-id: comm...yaml
            refresh: true

到了这里,关于Docker部署springcloud项目(清晰明了)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VSCode 配置 Lua 开发环境(清晰明了)

    由于 AutoJS 学得已经差不多了,基本都会了,现在开始向其他游戏脚本框架进发, Lua 语言很强大 ,就不多说, 按键精灵、触动精灵等等都是用该语言编程脚本的,由于按键精灵、触动精灵 和 AutoJS 类似,不是说一样是因为按键精灵、触动精灵整合大漠插件等牛逼插件,控制

    2024年02月07日
    浏览(43)
  • WIndows 配置多版本python环境,非常清晰明了

    配置多个python环境 下面以配置三个python版本环境为例子 首先下载好三个环境的python,如: python2.7、python3.6、python3.10 给个官网链接自己下,想要几版本就下几:https://www.python.org/downloads/windows/ 下载完成后将python2.7中的python.exe文件改名为python2.exe,也可以叫python2.7.exe, 反正叫

    2024年02月10日
    浏览(31)
  • Vue3 使用MD5加密(清晰明了)

    最近在想做个cloud项目,gitee上找了个模板项目,前端使用到vue3 + typeScript、Element Plus、Vue Router、Pinia、Axios、i18n、Vite等技术,最近使用到 vue3 MD5加密 ,顺便学习一下,在此总结一下,若有不足之处,望大佬们可以指出。 注意: ts-md5 不是 js-md5 定义: 局部使用: 定义: 意思

    2023年04月08日
    浏览(32)
  • 【网络】无线路由器的AP、Client、WDS、WISP使用功能图解(清晰明了)

    有线路由器组成:一个有一个 WAN 口和一个 LAN 口的路由器、一个有几个 LAN 口的网络交换机,一个接在 LAN 口的 DHCP 服务器。如下图所示 在路由器的 LAN 口上,接了一个无线交换机。这个无线交换机的无线插接口,就是这个无线路由器的无线 AP,这种工作模式就是无线路由器

    2024年02月09日
    浏览(24)
  • MySQL5.7版本在CentOS系统安装 保姆级教程 从小白开始 步骤清晰简单明了

    注意:需要使用root权限 ps:图片大都为安装MySQL8.0版本时的截图仅供参考,实际指令请参照红色字体代码,8.0和5.7版本安装步骤相同,个别地方代码有所差别 安装MySQL8.0版本:http://t.csdn.cn/CSOqM 目录 一. 安装 1. 配置yum仓库 2. 使用yum安装MySQL 3. 安装完成后,启动MySQL并配置开机

    2024年02月08日
    浏览(53)
  • SpringCloud(5)— 微服务部署(Docker)

    1.项目部署问题 大型项目组件较多,运行环境较为复杂,部署和维护困难 依赖关系复杂,容易出现兼容性问题 开发,测试,生产环境有差异 2.解决依赖的兼容问题 将应用的Libs(函数库),Deps(依赖),配置与应用一起打包 将每个应用放到一个单独的容器中去运行,避免相互干

    2024年01月20日
    浏览(59)
  • kubernetes集群部署springcloud项目【AL】

    kubernetes集群部署springcloud项目【AL】 (先手工做,非自动化) 整体逻辑架构图 2.1 dev1分支的文件 (交付代码): 2.2 gateway-service 网关服务 tips: 2.3 product-service 商品服务 2.4 eureka-service 注册中心服务 其他的文件夹要看的关键文件,以此类推。 3 、 dev2 编写Dockerfile构建镜像。

    2024年02月14日
    浏览(27)
  • Jenkins+Docker+SpringCloud微服务持续集成之集群部署

      idea中修改注册中心eureka的配置,单节点换成集群   在启动微服务的时候,加入参数: spring.profiles.active 来读取对应的配置 网关服务配置   权限管理配置   业务模块配置       该插件可以支持多选框         逗号必须得是英文,否则出错       循环测试代码检查      

    2024年02月07日
    浏览(34)
  • 关于如何将一个springcloud项目部署至服务器

    目录 1.部署形式 2.Alibaba Cloud Toolkit的使用 3.一个springcloud项目的部署 4.运行jar包 5.后台运行 一般我们在后端开发中,常常将整个springboot项目打包成war包,或是打包成一个jar包,再将其使用ssh工具传输至服务器中,执行即可。 但是springcloud项目属于微服务框架,是由一个父工程

    2023年04月16日
    浏览(29)
  • Jenkins K8S Docker 一键部署SpringCloud微服务

    一键部署springcloud微服务,需要用到 Jenkins K8S Docker等工具,若未安装,请参考《Centos 7 安装K8S》 本文使用jenkins部署,流程如下图 开发者将代码push到git 运维人员通过jenkins部署,自动到git上pull代码 通过maven构建代码 将maven构建后的jar打包成docker镜像 并 push docker镜像到docker

    2024年02月02日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包