使用docker、docker-compose部署微服务

news2025/1/18 6:55:10

使用docker、docker-compose部署微服务

  • 一、使用docker部署
    • 1、准备
    • 2、上传jar包
    • 3、编写dockerfile文件
    • 3、构建镜像和容器
  • 二、使用docker-compose部署
    • 1、准备服务的jar包和dockerfile文件
    • 2、编写docker-compose.yml文件
    • 3、docker-compose常用命令
      • (1)、前台创建镜像并启动容器
      • (2)、后台创建镜像并启动容器
      • (3)、查看启动的容器
    • 4、停止服务(含删除)
    • 5、启动服务容器
    • 6、关闭服务容器
    • 7、重启服务容器

一、使用docker部署

1、准备

这里已经在docker安装并启动好了Redis、nacos,配置好了“ruoyi-gateway-prod.yml”文件。

注意如果配置文件中有Redis、MySQL、nacos这些的连接信息,需要把IP地址改为服务器的公网地址或者内网地址,不会连接不到。
在这里插入图片描述

2、上传jar包

我这里以微服务版若依的网关服务为例,上传到指定目录。

在这里插入图片描述

3、编写dockerfile文件

官方文档:

https://docs.docker.com/engine/reference/builder/

英文的看起来有些吃力,若依这里有中文的教程

在这里插入图片描述

这是若依的文档地址:

http://doc.ruoyi.vip/ruoyi-cloud/cloud/dokcer.html#dockerfile

先获取构建镜像所需要的基础镜像,也就是jdk镜像,先看看有哪些jdk镜像

docker search openjdk

在这里插入图片描述
这里获取的是jdk8的镜像

docker pull openjdk:8-jre

在这里插入图片描述
我之前获取过,第一次获取可能慢一点。

再创建一个名为dockerfile的文件,文件名可以自定义,一般都为dockerfile,内容如下:
在这里插入代码片

# 基础镜像
FROM  openjdk:8-jre
# author
LABEL author="gan"

# 创建目录
RUN mkdir -p /home/jar
# 指定路径,后面运行的jar包就是在这个目录
WORKDIR /home/jar
# 挂载目录
VOLUME /home/jar

# 复制jar文件到路径,第一个是宿主机文件目录(dockerfile所在目录,不能是绝对路径),第二个是容器文件目录
COPY ./ruoyi-gateway.jar /home/jar/ruoyi-gateway.jar

# 启动网关服务jar包
ENTRYPOINT ["java","-jar","-Xms256M","-Xmx256M","ruoyi-gateway.jar"]

上传到和jar包同一目录

在这里插入图片描述

假如要复制多个文件到容器,可以这样

在这里插入图片描述

3、构建镜像和容器

在当前目录下构建镜像,注意后面的“.”不是多余的,命令如下:

docker build -f /www/wwwroot/changjing/jar/gateway/dockerfile -t ruoyi-gateway .

解释:

-f:后面接的是 dockerfile 文件的路径
-t:为构建的镜像打上标签,就是构建的镜像名称

注意:

执行构建镜像的命令要在dockerfile文件所在目录,因为dockerfile文件的“COPY” 命令只能在相对于dockerfile文件的相对目录,使用宿主机的绝对目录构建会报错。

执行结果如下:

在这里插入图片描述

构建成功,因为我前面已经构建成功过了,可能会和第一次构建不太一样。

接下来启动镜像,命令如下:

docker run -d --name ruoyi-gateway -p 8010:8010 ruoyi-gateway

解释:

–name:后面接的是容器名称,我这里和镜像名称一样
-p:后面接的是宿主机和容器的端口映射,“:”前为服务器端口,“:”后为seata容器端口
最后面的是镜像名称

可以看到容器已经跑起来了。

在这里插入图片描述

二、使用docker-compose部署

使用docker-compose部署服务是使用docker部署基础上,增加docker-compose.yml文件统一管理服务容器,实现一个命令启动或关闭所有服务容器,所以要使用docker-compose部署,还是得先学会使用docker部署,是一种前期麻烦后期舒服的部署方式。

若依也有相关的教程:

http://doc.ruoyi.vip/ruoyi-cloud/cloud/dokcer.html#docker-compose

1、准备服务的jar包和dockerfile文件

在保留前面若依的gateway的jar包和dockerfile文件基础上,增加auth的jar包和dockerfile文件,auth的dockerfile跟gateway大同小异,具体如下:

# 基础镜像
FROM  openjdk:8-jre
# author
LABEL author="gan"

# 创建目录
RUN mkdir -p /home/jar
# 指定路径
WORKDIR /home/jar
# 挂载目录
VOLUME /home/jar

# 复制jar文件到路径,第一个是宿主机文件目录(dockerfile所在目录,不能是绝对路径),第二个是容器文件目录
COPY ./ruoyi-auth.jar /home/jar/ruoyi-auth.jar
# 启动系统服务
ENTRYPOINT ["java","-jar","-Xms256M","-Xmx256M","ruoyi-auth.jar"]

在这里插入图片描述

上传到指定的文件夹

在这里插入图片描述

在这里插入图片描述

2、编写docker-compose.yml文件

官网上docker-compose.yml文件对应的docker版本
在这里插入图片描述

这是我的docker版本:

在这里插入图片描述

所以我的docker-compose.yml的文件版本是3.8。

文件中只有gateway和auth相关的内容,具体如下:

# 描述 Compose 文件的版本信息
version : '3.8'

# 定义服务,可以多个,每个服务中定义了创建容器时所需的镜像、参数、依赖等
services:
  ruoyi-gateway:  # 服务名称,跟构建镜像名称有关,假如image值为空,那么生成的镜像名称为“docker-compose.yml文件所在目录名称_ruoyi-gateway”,我放在jar目录,生成的镜像名称就是jar_ruoyi-gateway
    image: ruoyi-gateway  # 构建镜像名称
    container_name: ruoyi-gateway   # 容器名称
    build:
      context: ./gateway    # 构建镜像的jar包和dockerfile文件所在的目录(相对于docker-compose.yml文件,我这里gateway目录是跟docker-compose.yml文件同一目录)
      dockerfile: dockerfile  # 构建网关镜像的文件名称
    ports:
      - "8010:8010"   # 构建容器端口号,“:”前为宿主机端口,“:”后为容器端口
  ruoyi-auth:
    image: ruoyi-auth
    container_name: ruoyi-auth
    build:
      context: ./auth
      dockerfile: dockerfile
    ports:
      - "9200:9200"

文件写好后上传到指定目录

在这里插入图片描述

3、docker-compose常用命令

(1)、前台创建镜像并启动容器

类似使用 java -jar 命令启动jar包,注意要在docker-compose.yml文件所在目录执行,命令如下:

docker-compose up

在这里插入图片描述
窗口一旦关闭服务就停止了,初次启动服务的时候可以使用,最左边是服务名称,如果每个服务都没有看到日志报错就代表启动成功了。

在这里插入图片描述
Ctrl+C退出,但即使关闭了,创建的镜像和容器还存在

在这里插入图片描述

(2)、后台创建镜像并启动容器

也要在docker-compose.yml文件所在目录执行,命令如下:

docker-compose up -d

在这里插入图片描述

也可以指定docker-compose.yml文件的路径,命令如下:

docker-compose -f /www/wwwroot/changjing/jar/docker-compose.yml up -d

在这里插入图片描述

执行不会打印每个服务启动的日志,需要查看日志可以使用如下命令进行查看

docker-compose logs

在这里插入图片描述
如果只想看ruoyi-auth服务的日志,可以使用如下命令

docker-compose logs ruoyi-auth

在这里插入图片描述

(3)、查看启动的容器

可以查看docker-compose.yml文件启动的所有容器,命令如下:

docker-compose ps

在这里插入图片描述

也可以指定服务名称,比如执行看ruoyi-auth有没有启动,命令如下:

docker-compose ps ruoyi-auth

在这里插入图片描述

注意只能在docker-compose.yml文件所在目录执行,在其他目录执行会报错

在这里插入图片描述

4、停止服务(含删除)

停止并删除所有服务的容器,不删除镜像,命令如下:

docker-compose down

可以看到镜像还在,但对应的容器被删除了。

在这里插入图片描述
查看服务容器所对应的镜像,命令如下:

docker-compose images

在这里插入图片描述

停止并删除工程中所有服务的容器、网络、镜像,命令如下:

docker-compose down --rmi all

在这里插入图片描述
如果重新上传了jar包就可以使用这个方式停止。

5、启动服务容器

启动工程中所有服务的容器,命令如下:

docker-compose start

在这里插入图片描述
也可以在上面命令的基础上加上容器名称,启动指定的容器,比如我只启动gateway容器,命令如下:

docker-compose start ruoyi-gateway

在这里插入图片描述

6、关闭服务容器

关闭工程中所有服务的容器,命令如下:

docker-compose stop

在这里插入图片描述
也可以在上面命令的基础上加上容器名称,关闭指定的容器,比如我只关闭auth容器,命令如下:

docker-compose stop ruoyi-auth

在这里插入图片描述

7、重启服务容器

重启工程中所有服务的容器,命令如下:

docker-compose restart

在这里插入图片描述

也可以在上面命令的基础上加上容器名称,重启指定的容器,比如我只重启auth容器,命令如下:

docker-compose restart ruoyi-auth

在这里插入图片描述

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

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

相关文章

地下水质分析积分球

我国的河流水资源相当丰富,河川径流总量历年来位居世界第三,年均达到了27000亿m。但经济快速发展的同时对河流水资源产生了一定的负面影响,河流水质污染和富营养化的现象偶有发生,在对我国七大水系216条河流503个主要断面进行监测…

冠达管理:什么是k线怎样看k线图?

K线图是一种股票商场常用的价格图表,它显现了一段时刻内股票开盘价、收盘价、最高价和最低价等信息。K线起源于日本,在上世纪90年代被引进到全球股市中。跟着股市的开展,K线图已经成为股票商场数据剖析中常用的工具,因此了解K线图…

一文速学-让神经网络不再神秘,一天速学神经网络基础-前向传播(三)

前言 思索了很久到底要不要出深度学习内容,毕竟在数学建模专栏里边的机器学习内容还有一大半算法没有更新,很多坑都没有填满,而且现在深度学习的文章和学习课程都十分的多,我考虑了很久决定还是得出神经网络系列文章,…

C语言这么没用??

今日话题,C语言真的这么不堪吗?最近我兄弟向我倾诉,他在几天前受到老板的责骂,原因是他只懂C语言编程,无法达到老板的期望。其实不是C语言不堪,而是嵌入式领域复杂性多种多样,需要灵活的解决方案…

idea查找maven所有依赖

文章目录 idea自带的依赖结构图idea安装maven helper插件 idea自带的依赖结构图 缺点是只有依赖,没有版本 idea安装maven helper插件 settings–>plugins–>搜索maven helper并安装 安装后打开pom.xml文件会有依赖解析 勾选conflict就是有冲突的依赖选中…

ACE_Proactor

服务端代码&#xff1a; #include "stdafx.h" #include <iostream> #include "ace/Message_Queue.h" #include "ace/Asynch_IO.h" #include "ace/OS.h" #include "ace/Proactor.h" #include "ace/Asynch_Accept…

knife4j 整合 springboot

官方文档&#xff1a;https://doc.xiaominfo.com/knife4j 版本兼容说明&#xff1a;https://doc.xiaominfo.com/docs/quick-start/start-knife4j-version 升级说明&#xff1a;https://doc.xiaominfo.com/docs/upgrading/upgrading-to-v4版本兼容惯关系&#xff1a; springboot…

【微信小程序】小程序隐私保护指引设置

首先了解官方提供demo&#xff1a; demo1: 演示使用 wx.getPrivacySetting 和 <button open-type"agreePrivacyAuthorization"> 在首页处理隐私弹窗逻辑 https://developers.weixin.qq.com/s/gi71sGm67hK0 demo2: 演示使用 wx.onNeedPrivacyAuthorization 和…

Python面试:什么是GIL

1. GIL (Global Interpreter lock)可以避免多个线程同时执行字节码。 import threadinglock threading.Lock()n [0]def foo():with lock:n[0] n[0] 1n[0] n[0] 1threads [] for i in range(5000):t threading.Thread(targetfoo)threads.append(t)for t in threads:t.s…

深入解析文件系统原理(inode,软硬链接区别)

第四阶段提升 时 间&#xff1a;2023年8月29日 参加人&#xff1a;全班人员 内 容&#xff1a; 深入解析文件系统原理 目录 一、Inode and Block概述 &#xff08;一&#xff09;查看文件的inode信息&#xff1a;stat &#xff08;二&#xff09;Atime、Mtime、Ctime详…

高精度 低纹波|12A大电流电源解决方案,网通、视频显示、国产PC行业多领域适用

随着科技的快速发展&#xff0c;各行业产品都在不断迭代和加速升级&#xff0c;TV产品也不例外。TV产品的演变一直朝着大尺寸、高分辨率的方向发展&#xff0c;从2K到4K再升级至8K&#xff0c;每一次的升级都为消费者带来更好的视觉体验。 从技术层面来看&#xff0c;“8K大尺寸…

RocketMQ消息查询

区别于消息消费&#xff1a;先尝后买 尝就是消息查询 买&#xff1a;消息的消费 RocketMQ支持按照下面两种维度("按照Message ld查询消息"、"按照Message Key查询消息")进行消息查询。 1按照Messageld查询消息 Msgld总共16字节&#xff0c;包含消息存储…

[Mac软件]Adobe After Effects 2023 v23.5 中文苹果电脑版(支持M1)

After Effects是动画图形和视觉效果的行业标准。由运动设计师、平面设计师和视频编辑用于创建复杂的动画图形和视觉上吸引人的视频。 创建动画图形 使用预设样式为文本和图形添加动画效果&#xff0c;或逐帧调整它们。编辑、添加深度、制作动画或转换为可编辑的路径&#xff…

冠达管理:美股涨了!“越南特斯拉”市值直追丰田!这一论坛将召开

当地时间8月28日&#xff0c;美股三大股指团体收涨&#xff0c;到收盘&#xff0c;道指报34559.98点&#xff0c;涨0.62%&#xff1b;标普500指数报4433.31点&#xff0c;涨0.63%&#xff1b;纳指报13705.13点&#xff0c;涨0.84%。 高盛上星期五发布的数据显现&#xff0c;在英…

聚焦数据安全,“2023数据安全平台神兽企业”调研正式启动

当下&#xff0c;数字经济正蓬勃发展&#xff0c;数据已成为关键驱动力&#xff0c;而数据安全是保障数据要素价值的前提。数据安全建设也正在从孤立的数据安全产品过渡到数据安全平台&#xff0c;以更大程度促进数据的业务利用率和价值。 为了更好洞察和反映当前数据安全平台…

开发工具——IDE安装 / IDEA子module依赖导入失败编译提示xx找不到符号 / IDEA在Git提交时卡顿

近期换了工作电脑&#xff0c;公司的IT团队不够给力&#xff0c;不能复制电脑系统&#xff0c;所以又到了需要重装IDE配置开发环境的时候了&#xff1b;在安装和导入Java编译器IDEA的时候遇到一些"棘手"问题&#xff0c;这里整理下解决方法以备不时之需&#xff1b; …

bootloader串口更新程序[瑕疵学习板]

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、储备知识二、程序步骤2.程序展示1.bootloader2.然后是主运行函数总结前言 很久没有更新文章了。最近工作太忙,没有学习很多的知识,然后这两天不忙了,就学习了一下bootloader的程序升级…

hive lateral view 实践记录(Array和Map数据类型)

目录 一、Array 1.建表并插入数据 2.lateral view explode 二、Map 1、建表并插入数据 2、lateral view explode() 3、查询数据 一、Array 1.建表并插入数据 正确插入数据&#xff1a; create table tmp.test_lateral_view_movie_230829(movie string,category array&…

基于水基湍流算法优化的BP神经网络(预测应用) - 附代码

基于水基湍流算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于水基湍流算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.水基湍流优化BP神经网络2.1 BP神经网络参数设置2.2 水基湍流算法应用 4.测试结果&#xff1a;5…

搭建自己的ChatGPT智能问答,HelpLook ChatBot 正式上线!

基于已有内容的站点或现成文档 零代码快速导入 即可生成自己专属的ChatGPT智能问答机器人 HelpLook ChatBot&#xff0c;正式发布上线&#xff01; 只需连接您的数据源&#xff0c;HelpLook 就能为您的数据创建一个类似 ChatGPT 的聊天机器人。您可以将它作为小工具以 JS 的…