docker 快速部署若依项目

news2025/7/16 15:24:48

1、首先创建一个自定义网络,作用是使连接到该网络的容器能够通过容器名称进行通信,无需使用复杂的IP地址配置,方便了容器化应用中各个服务之间的交互。

 sudo docker network create ruoyi

2、创建一个文件夹,创建compose.yml文件,在当前文件夹下通过compose.yml文件拉取镜像并自动配置和启动

vi compose.yaml
# 指定 Docker Compose 文件的版本,这里使用 3.8 版本
version: '3.8'

# 定义服务部分,每个服务对应一个容器
services:
  # 定义名为 mysql 的服务
  mysql:
    # 指定使用的镜像,这里使用 sword03/mysql:v1.0 镜像
    image: sword03/mysql:v1.0
    # 为容器指定名称为 mysql
    container_name: mysql
    # 设置容器的重启策略为总是重启,即容器停止后会自动重启
    restart: always
    # 给予容器特权模式,允许容器内的进程访问主机的所有设备
    privileged: true
    # 定义容器运行时的环境变量
    environment:
      # 设置 MySQL 的 root 用户密码为 123456
      MYSQL_ROOT_PASSWORD: 123456
    # 定义容器要加入的网络,这里加入 ruoyi 网络
    networks:
      - ruoyi
    # 定义容器端口映射,将容器内的 3306 端口映射到宿主机的 3306 端口
    ports: 
      - "3306:3306"
    # 为容器添加健康检查
    healthcheck:
      # 定义健康检查的命令,使用 mysqladmin ping 命令来检查 MySQL 是否正常运行
      test: ["CMD", "mysqladmin", "ping", "-uroot", "-p123456"]
      # 定义健康检查的时间间隔为 5 秒
      interval: 5s
      # 定义健康检查的超时时间为 3 秒
      timeout: 3s
      # 定义健康检查失败后的重试次数为 10 次
      retries: 10

  # 定义名为 redis 的服务
  redis:
    # 指定使用的镜像,这里使用 sword03/redis:v1.0 镜像
    image: sword03/redis:v1.0
    # 为容器指定名称为 redis
    container_name: redis
    # 定义容器启动时执行的命令,这里设置 Redis 的访问密码为 123456
    command: --requirepass "123456"
    # 定义容器要加入的网络,这里加入 ruoyi 网络
    networks:
      - ruoyi
    # 定义容器端口映射,将容器内的 6379 端口映射到宿主机的 6379 端口
    ports:
      - "6379:6379"
    # 为容器添加健康检查
    healthcheck:
      # 定义健康检查的命令,使用 redis-cli ping 命令来检查 Redis 是否正常运行
      test: ["CMD", "redis-cli", "-a", "123456", "ping"]
      # 定义健康检查的时间间隔为 3 秒
      interval: 3s
      # 定义健康检查的超时时间为 2 秒
      timeout: 2s
      # 定义健康检查失败后的重试次数为 10 次
      retries: 10

  # 定义名为 ruoyiback 的服务
  ruoyiback:
    # 指定使用的镜像,这里使用 sword03/ruoyiback:v1.0 镜像
    image: sword03/ruoyiback:v1.0
    # 为容器指定名称为 ruoyiback
    container_name: ruoyiback
    # 定义容器要加入的网络,这里加入 ruoyi 网络
    networks:
      - ruoyi
    # 定义容器端口映射,将容器内的 8080 端口映射到宿主机的 8080 端口
    ports:
      - "8080:8080"
    # 定义服务依赖关系
    depends_on:
      # 依赖 mysql 服务,并且要求 mysql 服务处于健康状态才启动
      mysql:
        condition: service_healthy
      # 依赖 redis 服务,并且要求 redis 服务处于健康状态才启动
      redis:
        condition: service_healthy
    # 为容器添加健康检查
    healthcheck:
      # 定义健康检查的命令,使用 curl 命令检查应用的健康接口
      test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
      # 定义健康检查的时间间隔为 10 秒
      interval: 10s
      # 定义健康检查的超时时间为 5 秒
      timeout: 5s
      # 定义健康检查失败后的重试次数为 10 次
      retries: 10

  # 定义名为 ruoyifont 的服务
  ruoyifont:
    # 指定使用的镜像,这里使用 sword03/ruoyifont:v1.0 镜像
    image: sword03/ruoyifont:v1.0
    # 为容器指定名称为 ruoyifont
    container_name: ruoyifont
    # 定义容器要加入的网络,这里加入 ruoyi 网络
    networks:
      - ruoyi
    # 定义容器端口映射,将容器内的 80 端口映射到宿主机的 80 端口
    ports:
      - "80:80"
    # 定义服务依赖关系
    depends_on:
      # 依赖 ruoyiback 服务,并且要求 ruoyiback 服务处于健康状态才启动
      ruoyiback:
        condition: service_healthy

# 定义网络部分
networks:
  # 定义名为 ruoyi 的网络
  ruoyi:
    # 指定网络的名称为 ruoyi
    name: ruoyi
    # 指定网络的驱动类型为 bridge
    driver: bridge
    # 指定该网络为外部网络,即该网络已经存在,不需要 Docker Compose 创建
    external: true

3、docker-compose的安装

# 安装
(国外源)
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
(国内源)
sudo curl -L "https://mirrors.aliyun.com/docker-toolbox/linux/compose/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 授予执行权限
sudo chmod +x /usr/local/bin/docker-compose

4、在docker中启动容器化应用程序并指定项目名称

sudo docker-compose up -d

二、可能会出现的错误

1、在我docker-compose安装源的时候,安装国外源的时候连接被拒绝,我就将compose利用FileZilla上传到Linux的/usr/local/bin/目录下

cd /usr/local/bin
sudo cp docker-compose /usr/local/bin

2、去compose.yaml文件所在的目录下去执行 sudo docker-compose up -d

 

3、执行 sudo docker-compose up -d 后显示我的MySQL已经存在,所以我就删除了那四个容器然后再执行sudo docker-compose up -d 就成功啦,如下图

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

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

相关文章

polarctf-web-[rce1]

考点: (1)RCE(exec函数) (2)空格绕过 (3)执行函数(exec函数) (4)闭合(ping命令闭合) 题目来源:Polarctf-web-[rce1] 解题: 这段代码实现了一个简单的 Ping 测试工具,用户可以通过表单提交一个 IP 地址,服务器会执…

Redis+Caffeine构造多级缓存

一、背景 项目中对性能要求极高,因此使用多级缓存,最终方案决定是RedisCaffeine。其中Redis作为二级缓存,Caffeine作为一级本地缓存。 二、Caffeine简单介绍 Caffeine是一款基于Java 8的高性能、灵活的本地缓存库。它提供了近乎最佳的命中…

docker(四)使用篇二:docker 镜像

在上一章中,我们介绍了 docker 镜像仓库,本文就来介绍 docker 镜像。 一、什么是镜像 docker 镜像本质上是一个 read-only 只读文件, 这个文件包含了文件系统、源码、库文件、依赖、工具等一些运行 application 所必须的文件。 我们可以把…

AXI4总线协议 ------ AXI_LITE协议

一、AXI 相关知识介绍 https://download.csdn.net/download/mvpkuku/90841873 AXI_LITE 选出部分重点,详细文档见上面链接。 1.AXI4 协议类型 2.握手机制 二、AXI_LITE 协议的实现 1. AXI_LITE 通道及各通道端口功能介绍 2.实现思路及框架 2.1 总体框架 2.2 …

Ubuntu24.04 安装 5080显卡驱动以及cuda

前言 之前使用Ubuntu22.04版本一直报错,然后换了24.04版本才能正常安装 一. 配置基础环境 Linux系统进行环境开发环境配置-CSDN博客 二. 安装显卡驱动 1.安装驱动 按以下步骤来: sudo apt update && sudo apt upgrade -y#下载最新内核并安装 sudo add…

SpringAI-RC1正式发布:移除千帆大模型!

续 Spring AI M8 版本之后(5.1 发布),前几日 Spring AI 悄悄的发布了最新版 Spring AI 1.0.0 RC1(5.13 发布),此版本也将是 GA(Generally Available,正式版)发布前的最后…

操作系统之进程和线程听课笔记

计算机的上电运行就是构建进程树,进程调度就是在进程树节点进程进行切换 进程间通信的好处 经典模型 生产者和消费者 进程和线程的区别 线程引入带来的问题线程的优势 由于unix70年代产生,90年代有线程,当时数据库系统操作需要线程,操作系统没有来得及重造,出现了用户态线…

COMSOL随机参数化表面流体流动模拟

基于粗糙度表面的裂隙流研究对于理解地下水的流动、污染物传输以及与之相关的地质灾害(如滑坡)等方面具有重要意义。本研究通过蒙特卡洛方法生成随机表面形貌,并利用COMSOL Multiphysics对随机参数化表面的微尺度流体流动进行模拟。 参数化…

JavaSwing中的容器之--JScrollPane

JavaSwing中的容器之–JScrollPane 在Java Swing中,容器是用于容纳其他组件(如按钮、标签等)的组件。Swing提供了多种容器,它们可以嵌套使用以创建复杂的用户界面。 JScrollPane是一个轻量级组件,提供可滚动视图。JSc…

使用 Cookie 实现认证跳转功能

使用 Cookie 实现认证跳转功能的实践与解析 在 Web 开发中,用户身份认证是一个基础而关键的功能点。本文将通过一个简单的前后端示例系统,介绍如何基于 Cookie 实现 Token 保存与自动跳转认证的功能,并结合 Cookie 与 Header 的区别、使用场…

LED接口设计

一个LED灯有3种控制状态,常亮、常灭和闪烁,要做到这种控制最简单的一种方法是使用任何一款处理器的普通IO去控制。 用IO控制方式有两种,一种是高有效,如下图1所示IO口为高电平时LED亮,IO为低电平时LED不亮。IO口出一个…

SpringBoot项目使用POI-TL动态生成Word文档

近期项目工作需要动态生成Word文档的需求,特意调研了动态生成Word的技术方案。主要有以下两种: 第一种是FreeMarker模板来进行填充;第二种是POI-TL技术使用Word模板来进行填充; 以下是关于POI-TL的官方介绍 重点关注&#xff1…

YOLOv3深度解析:多尺度特征融合与实时检测的里程碑

一、YOLOv3的诞生:继承与突破的起点 YOLOv3作为YOLO系列的第三代算法,于2018年由Joseph Redmon等人提出。它在YOLOv2的基础上,针对小目标检测精度低、多类别标签预测受限等问题进行了系统性改进。通过引入多尺度特征图检测、残差网络架构和独…

uniapp-商城-60-后台 新增商品(属性的选中和页面显示)

前面添加了属性,添加属性的子级项目。也分析了如何回显,但是在添加新的商品的时,我们也同样需要进行选择,还要能正常的显示在界面上。下面对页面的显示进行分析。 1、界面情况回顾 属性显示其实是个一嵌套的数据显示。 2、选中的…

虹科技术 | 简化汽车零部件测试:LIN/CAN总线设备的按键触发功能实现

汽车零部件测试领域对操作的便捷性要求越来越高,虹科Baby-LIN-RC系列产品为这一需求提供了完美的解决方案。从基础的按键设置到高级的Shift键应用,本文将一步步引导您了解虹科Baby-LIN-RC系列产品的智能控制之道。 虹科Baby-LIN-3-RC 想象一下&#xff0…

单片机ESP32天气日历闹铃语音播报

自制Arduino Esp32 单片机 可以整点语音播报,闹铃语音播报,农历显示,白天晚上天气,硬件有 Esp32,ST7789显示屏,Max98357 喇叭驱动,小喇叭一枚。有需要源码的私信我。#单片机 #闹钟 #嵌入式 #智能…

如何解决LCMS 液质联用液相进样器定量环漏液问题

以下是解决安捷伦1260液相色谱仪为例的进样器定量环漏液问题的一些方法:视频操作 检查相关部件 检查定量环本身:观察定量环是否有破损、裂纹或变形等情况。如果发现定量环损坏,需及时更换。检查密封垫:查看进样阀的转子密封垫、计…

服务器内部可以访问外部网络,docker内部无法访问外部网络,只能docker内部访问

要通过 iptables 将容器中的特定端口请求转发到特定服务器,你需要设置 DNAT(目标地址转换)规则。以下是详细步骤: 假设场景 容器端口: 8080(容器内服务监听的端口)目标服务器: 192.168.1.100(请…

PCIe Switch 问题点

系列文章目录 文章目录 系列文章目录完善PCIe Retimer Overview Document OutlineSwitch 维度BroadComMicroChipAsmedia 祥硕Cyan其他 完善 Functional block diagram,功能框图Key Features and Benefits,主要功能和优点Fabric 链路Multi-root PCIe Re…

开源轻量级地图解决方案leaflet

Leaflet 地图:开源轻量级地图解决方案 Leaflet 是一个开源的 JavaScript 库,用于在网页中嵌入交互式地图。它以轻量级、灵活性和易用性著称,适用于需要快速集成地图功能的项目。以下是关于 Leaflet 的详细介绍和使用指南。 1. Leaflet 的核心…