docker 运行 芋道微服务

jar包打包命令

mvn clean install package -Dmaven.test.skip=true

创建文件夹 docker-ai
文件夹下放入需要jar包的文件夹docker-compose.yml 文件
在这里插入图片描述
docker-compose.yml 内容:我这里的是ai服务,所以将原先的文件内容做了变更,你们需要用到什么服务就在下面文件中进行更改即可

version: '3'
services:
  yudao-gateway:
    build: 
      context: ./yudao-system
    image: yudao-gateway
    container_name: yudao-gateway
    environment:
      - TZ=Asia/Shanghai # 配置程序默认时区为上海(中国标准时间)
      - JAVA_TOOL_OPTIONS=-javaagent:/data/skywalking/skywalking-agent/skywalking-agent.jar # 配置skywalking
      - SW_AGENT_NAME=yudao-gateway
      - SW_AGENT_TRACE_IGNORE_PATH=Redisson/PING,/actuator/**,/admin/**
      - SW_AGENT_COLLECTOR_BACKEND_SERVICES=[YOUR_SKYWALKING_ADDR] # 请替换 your.skywalking.addr 为你的 skywalking 地址
      - SPRING_PROFILES_ACTIVE=test # 指定程序运行环境
      - SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR=[YOUR_NACOS_ADDR] # 配置中心地址
      - SPRING_CLOUD_NACOS_CONFIG_NAMESPACE=[YOUR_NAMESPACE] # 命名空间
      - SPRING_CLOUD_NACOS_SERVER_ADDR=[YOUR_NACOS_ADDR]  # 注册中心地址
      - SPRING_CLOUD_NACOS_DISCOVERY_NAMESPACE=[YOUR_NAMESPACE] # 命名空间
    volumes:
      - /docker/yudao-cloud/logs:/root/logs/
      - /data/skywalking/skywalking-agent:/data/skywalking/skywalking-agent
    restart: always
    network_mode: host # 以主机网络环境运行
  yudao-system:
    build: 
      context: ./yudao-system
    image: yudao-module-system-biz
    container_name: yudao-system
    environment:
      - TZ=Asia/Shanghai # 配置程序默认时区为上海(中国标准时间)
      - JAVA_TOOL_OPTIONS=-javaagent:/data/skywalking/skywalking-agent/skywalking-agent.jar # 配置skywalking
      - SW_AGENT_NAME=yudao-gateway
      - SW_AGENT_TRACE_IGNORE_PATH=Redisson/PING,/actuator/**,/admin/**
      - SW_AGENT_COLLECTOR_BACKEND_SERVICES=[YOUR_SKYWALKING_ADDR] # 请替换 your.skywalking.addr 为你的 skywalking 地址
      - SPRING_PROFILES_ACTIVE=test # 指定程序运行环境
      - SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR=[YOUR_NACOS_ADDR] # 配置中心地址
      - SPRING_CLOUD_NACOS_CONFIG_NAMESPACE=[YOUR_NAMESPACE] # 命名空间
      - SPRING_CLOUD_NACOS_SERVER_ADDR=[YOUR_NACOS_ADDR]  # 注册中心地址
      - SPRING_CLOUD_NACOS_DISCOVERY_NAMESPACE=[YOUR_NAMESPACE] # 命名空间
    volumes:
      - /docker/yudao-cloud/logs:/root/logs/
      - /data/skywalking/skywalking-agent:/data/skywalking/skywalking-agent
    healthcheck:
      test: [ "CMD","curl","-f","http://localhost:48081" ]
      interval: 30s
      timeout: 10s
      retries: 5
      start_period: 60s
    restart: always
    network_mode: host
  yudao-infra:
    build: 
      context: ./yudao-infra
    image: yudao-module-infra-biz
    container_name: yudao-infra
    environment:
      - TZ=Asia/Shanghai # 配置程序默认时区为上海(中国标准时间)
      - JAVA_TOOL_OPTIONS=-javaagent:/data/skywalking/skywalking-agent/skywalking-agent.jar # 配置skywalking
      - SW_AGENT_NAME=yudao-gateway
      - SW_AGENT_TRACE_IGNORE_PATH=Redisson/PING,/actuator/**,/admin/**
      - SW_AGENT_COLLECTOR_BACKEND_SERVICES=[YOUR_SKYWALKING_ADDR] # 请替换 your.skywalking.addr 为你的 skywalking 地址
      - SPRING_PROFILES_ACTIVE=test # 指定程序运行环境
      - SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR=[YOUR_NACOS_ADDR] # 配置中心地址
      - SPRING_CLOUD_NACOS_CONFIG_NAMESPACE=[YOUR_NAMESPACE] # 命名空间
      - SPRING_CLOUD_NACOS_SERVER_ADDR=[YOUR_NACOS_ADDR]  # 注册中心地址
      - SPRING_CLOUD_NACOS_DISCOVERY_NAMESPACE=[YOUR_NAMESPACE] # 命名空间
    volumes:
      - /docker/yudao-cloud/logs:/root/logs/
      - /data/skywalking/skywalking-agent:/data/skywalking/skywalking-agent
    restart: always
    network_mode: host
    healthcheck:
      test: [ "CMD","curl","-f","http://localhost:48082" ]
      interval: 30s
      timeout: 10s
      retries: 5
      start_period: 60s
    depends_on:
      yudao-system:
        condition: service_healthy
  yudao-ai:
    build: 
      context: ./yudao-ai
    image: yudao-module-ai-biz
    container_name: yudao-ai
    environment:
      - TZ=Asia/Shanghai # 配置程序默认时区为上海(中国标准时间)
      - JAVA_TOOL_OPTIONS=-javaagent:/data/skywalking/skywalking-agent/skywalking-agent.jar # 配置skywalking
      - SW_AGENT_NAME=yudao-gateway
      - SW_AGENT_TRACE_IGNORE_PATH=Redisson/PING,/actuator/**,/admin/**
      - SW_AGENT_COLLECTOR_BACKEND_SERVICES=[YOUR_SKYWALKING_ADDR] # 请替换 your.skywalking.addr 为你的 skywalking 地址
      - SPRING_PROFILES_ACTIVE=test # 指定程序运行环境
      - SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR=[YOUR_NACOS_ADDR] # 配置中心地址
      - SPRING_CLOUD_NACOS_CONFIG_NAMESPACE=[YOUR_NAMESPACE] # 命名空间
      - SPRING_CLOUD_NACOS_SERVER_ADDR=[YOUR_NACOS_ADDR]  # 注册中心地址
      - SPRING_CLOUD_NACOS_DISCOVERY_NAMESPACE=[YOUR_NAMESPACE] # 命名空间
    volumes:
      - /docker/yudao-cloud/logs:/root/logs/
      - /data/skywalking/skywalking-agent:/data/skywalking/skywalking-agent
    restart: always
    network_mode: host
    depends_on:
      yudao-infra:
        condition: service_healthy

其他jar包文件夹下都放的是对应的jar包Dockerfile 文件
拿 yudao-gateway 文件夹举例:
在这里插入图片描述
Dockerfile 文件需要更改jar包所在位置
在这里插入图片描述
两种启动方式:
推荐方式一
方式一:docker一个个的启动,要每个服务下面都要放一份下面脚本
例:
拿 gateway服务启动脚本举例,这个脚本在网上找的,将路径和容器名称更改一下即可,已经验证过了,脚本是可行的,脚本创建完成之后记得赋予其权限,在脚本执行之前需要先创建每一个容器 docker build -t yudao-gateway .(后面有个. 不要忽略了),之后就只需要运行脚本就可以启动了

#!/bin/bash
set -e

## 第一步:删除可能启动的老 goodsoft-gateway 容器
echo "开始删除 goodsoft-gateway 容器"
docker stop goodsoft-gateway || true
docker rm goodsoft-gateway || true
echo "完成删除 goodsoft-gateway 容器"

## 第二步:启动新的 goodsoft-gateway 容器 \
echo "开始启动 goodsoft-gateway 容器"
## 重新构建 解决jar包更新后不生效的问题
docker build -t goodsoft-system .
docker run -d \
--name goodsoft-gateway \
-p 48080:48080 \
-e "SPRING_PROFILES_ACTIVE=dev" \
-v /home/ai/docker-ai/goodsoft-gateway:/root/logs/ \
goodsoft-gateway
echo "正在启动 goodsoft-gateway 容器中,需要等待 60 秒左右"

解决文件上传问题,原因:java服务中文件上传到服务器目录上的问题,因为docker文件与服务器的文件互不相通

-v /usr/sftp/file:/usr/sftp/file \

在这里插入图片描述
如果遇到以下报错
在这里插入图片描述
编辑 Docker 配置文件 加个代理源

sudo vi /etc/docker/daemon.json  
{
   
   
  "registry-mirrors": [
    "https://docker.m.daocloud.io", "https://noohub.ru", "https://huecker.io", "https://dockerhub.timeweb.cloud", "https://docker.rainbond.cc"
  ]
}

在这里插入图片描述
保存退出后重启docker

sudo systemctl restart docker 

在这里插入图片描述

方式二:
docker-ai 下运行以下命令启动:

docker compose -f docker-compose.yml up -d

在这里插入图片描述

docker compose 启动报错 ERROR [yudao-gateway internal] load metadata for docker.io/library/eclipse-temurin:21-jre
在这里插入图片描述
Docker 尝试拉取 eclipse-temurin:21-jre 镜像时遇到了网络相关的问题,使用国内镜像加速器
解决:找到 /etc/docker/daemon.json
更改为:

{
   
   

"registry-mirrors": [ "https://docker.m.daocloud.io", "https://noohub.ru", "https://huecker.io", "https://dockerhub.timeweb.cloud", "https://docker.rainbond.cc" ]

}

在这里插入图片描述
在这里插入图片描述
重新启动

docker compose -f docker-compose.yml up -d

yudao-system 服务启动失败报错了
在这里插入图片描述
检查log日志 docker logs yudao-system

[root@iZ8vbj8zzik3i0x7siftkrZ docker-ai]# docker logs yudao-system
Picked up JAVA_TOOL_OPTIONS: -javaagent:/data/skywalking/skywalking-agent/skywalking-agent.jar
Error occurred during initialization of VM
agent library failed Agent_OnLoad: instrument
Error opening zip file or JAR manifest missing : /data/skywalking/skywalking-agent/skywalking-agent.jar
Picked up JAVA_TOOL_OPTIONS: -javaagent:/data/skywalking/skywalking-agent/skywalking-agent.jar
Error occurred during initialization of VM
agent library failed Agent_OnLoad: instrument
Error opening zip file or JAR manifest missing : /data/skywalking/skywalking-agent/skywalking-agent.jar
Picked up JAVA_TOOL_OPTIONS: -javaagent:/data/skywalking/skywalking-agent/skywalking-agent.jar
Error opening zip file or JAR manifest missing : /data/skywalking/skywalking-agent/skywalking-agent.jar
Error occurred during initialization of VM
agent library failed Agent_OnLoad: instrument
Picked up JAVA_TOOL_OPTIONS: -javaagent:/data/skywalking/skywalking-agent/skywalking-agent.jar
Error occurred during initialization of VM
agent library failed Agent_OnLoad: instrument
Error opening zip file or JAR manifest missing : /data/skywalking/skywalking-agent/skywalking-agent.jar
Picked up JAVA_TOOL_OPTIONS: -javaagent:/data/skywalking/skywalking-agent/skywalking-agent.jar
Error opening zip file or JAR manifest missing : /data/skywalking/skywalking-agent/skywalking-agent.jar
Error occurred during initialization of VM
agent library failed Agent_OnLoad: instrument
Picked up JAVA_TOOL_OPTIONS: -javaagent:/data/skywalking/skywalking-agent/skywalking-agent.jar
Error opening zip file or JAR manifest missing : /data/skywalking/skywalking-agent/skywalking-agent.jar
Error occurred during initialization of VM
agent library failed Agent_OnLoad: instrument
Picked up JAVA_TOOL_OPTIONS: -javaagent:/data/skywalking/skywalking-agent/skywalking-agent.jar
Error opening zip file or JAR manifest missing : /data/skywalking/skywalking-agent/skywalking-agent.jar
Error occurred during initialization of VM
agent library failed Agent_OnLoad: instrument
Picked up JAVA_TOOL_OPTIONS: -javaagent:/data/skywalking/skywalking-agent/skywalking-agent.jar
Error opening zip file or JAR manifest missing : /data/skywalking/skywalking-agent/skywalking-agent.jar
Error occurred during initialization of VM
agent library failed Agent_OnLoad: instrument
Picked up JAVA_TOOL_OPTIONS: -javaagent:/data/skywalking/skywalking-agent/skywalking-agent.jar
Error opening zip file or JAR manifest missing : /data/skywalking/skywalking-agent/skywalking-agent.jar
Error occurred during initialization of VM
agent library failed Agent_OnLoad: instrument
Picked up JAVA_TOOL_OPTIONS: -javaagent:/data/skywalking/skywalking-agent/skywalking-agent.jar
Error opening zip file or JAR manifest missing : /data/skywalking/skywalking-agent/skywalking-agent
### 关于 SQL 教程或工具的使用 开源项目主要围绕 Spring Cloud 微服务架构展开,其功能覆盖了商城、CRM、ERP 和微信相关模块等多个领域。虽然官方文档并未明确提及独立的“ SQL 教程”,但从项目的实际应用来看,可以推测出一些关于 SQL 配置和使用的相关内容。 #### 数据库初始化与配置 在后端项目中,数据库的初始化是一个重要环节。当从 Gitee 上获取代码并部署Docker 环境时,通常需要执行以下操作: - **MySQL 初始化** 将 MySQL 的初始化语句运行完毕后,需修改 `datasource` 配置文件中的连接信息[^1]。这一步骤涉及到具体的 SQL 脚本执行以及数据表结构的设计。 - **Redis 配置调整** 同样地,在 Redis 的配置过程中也需要确保缓存机制能够正常工作。这部分内容可能间接依赖于某些存储过程或者触发器逻辑。 #### 可能存在的 SQL 工具集成 尽管未见专门针对 SQL 的教学材料,但考虑到该项目支持多种数据库类型的切换(如由 MySQL 替换为其他关系型数据库),因此极有可能内置了一些辅助性的 SQL 工具来简化迁移流程。例如: - 自动生成建表语句; - 提供跨平台兼容的数据同步方案; - 支持复杂查询优化建议等功能。 以下是基于假设的一个简单示例展示如何通过 Java 代码动态构建 SQL 查询条件: ```java public String buildQuery(String tableName, Map<String, Object> params){ StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder.append("SELECT * FROM ").append(tableName).append(" WHERE "); int i=0; for (Map.Entry<String,Object> entry : params.entrySet()) { if(i++ !=0 ){ sqlBuilder.append(" AND "); } sqlBuilder.append(entry.getKey()).append("=?"); } return sqlBuilder.toString(); } ``` 此方法允许开发者灵活定义参数列表从而生成相应的 SELECT 语句[^3]。 #### 总结 目前尚无确切证据表明存在名为 “ SQL 教程” 的资源集合。不过鉴于整个框架体系庞大且高度可定制化的特点,学习者完全可以参照现有文档逐步探索其中蕴含的各种高级特性——包括但不限于高效编写 ORM 映射规则、合理规划索引策略等方面的知识点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值