🔗 前言:Docker Compose 本地环境搭建相关文章


🐳 Docker Compose 本地环境搭建:skywalking

注意:需要已经安装 elasticsearch


📚 目录结构设计

推荐使用如下结构:

infra/
├── .env

├── mysql/
│   └── docker-compose.yml

├── redis/
│   └── docker-compose.yml

├── elasticsearch/
│   └── docker-compose.yml

├── skywalking/
│   └── docker-compose.yml

├── nacos/
│   └── docker-compose.yml

📄 docker-compose.yml

# =========================================================
# 用于构建环境:SkyWalking OAP/UI
# 宿主机挂载目录、端口、密码、版本号、环境后缀均通过 .env 文件管理
# =========================================================

###########################################################
# 网络配置
###########################################################
networks:
  env_network: # 内部网络标识固定
    driver: bridge
    name: ${NETWORK_NAME}        # Docker 实际网络名动态生成
    ipam:
      config:
        - subnet: ${NETWORK_SUBNET}  # 子网从 .env 获取

###########################################################
# 服务定义
###########################################################
services:
  # SkyWalking OAP
  skywalking-oap:
    image: apache/skywalking-oap-server:${SW_VERSION}
    container_name: skywalking-oap_${SW_VERSION}_${ENV}
    networks:
      - env_network
    ports:
      - "${SW_OAP_PORT_GRPC}:11800"
      - "${SW_OAP_PORT_REST}:12800"
    environment:
      SW_STORAGE: elasticsearch
      SW_STORAGE_ES_HTTP_PROTOCOL: http
      # 内部访问 ES 使用服务名,不用 container_name
      SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
      SW_ES_USER: elastic
      SW_ES_PASSWORD: ${SW_ES_PASSWORD}
      SW_CORE_RECORD_DATA_TTL: 7
      SW_CORE_METRICS_DATA_TTL: 15
      SW_CORE_LOG_DATA_TTL: 7
      SW_STORAGE_FLUSH_INTERVAL: 10
    restart: unless-stopped
    labels:
      env: ${ENV}
      version: ${SW_VERSION}
      service: skywalking-oap_${ENV}

  # SkyWalking UI
  skywalking-ui:
    image: apache/skywalking-ui:${SW_VERSION}
    container_name: skywalking-ui_${SW_VERSION}_${ENV}
    networks:
      - env_network
    depends_on:
      skywalking-oap:
        condition: service_started
    ports:
      - "${SW_UI_PORT}:8080"
    environment:
      SW_OAP_ADDRESS: http://skywalking-oap:12800
    restart: unless-stopped
    labels:
      env: ${ENV}
      version: ${SW_VERSION}
      service: skywalking-ui_${ENV}

🚀 启动方式

.env 同级目录下执行

docker compose --env-file .env -f skywalking/docker-compose.yml up -d
  • -d 表示 后台运行
  • Compose 会:
    • 自动读取 .env 文件里的变量
    • 根据 docker-compose.yml 配置创建网络、卷和容器
    • 容器名、端口、挂载目录都会根据 .env 替换

🌐 浏览器访问

http://localhost:20000/

在这里插入图片描述


🔍 项目中使用SkyWalking

下载 SkyWalking Agent(必须)

SkyWalking Agent Java配置 官网https://skywalking.apache.org/docs/skywalking-java/v9.5.0/en/setup/service-agent/java-agent/readme/

SkyWalking Agent 官网下载链接https://skywalking.apache.org/downloads/#JavaAgent

在这里插入图片描述
在这里插入图片描述
解压后如下
在这里插入图片描述

1 IDEA(IntelliJ)运行方式

📌 步骤

  1. 打开 Run/Debug Configurations
  2. 找到启动项,如 “SpringBootApp”
  3. 找到字段:VM Options
  4. 添加:增加 VM 启动参数
  5. Dskywalking.collector.backend_service 使用 11800 的映射端口,我这里是 21800
    -javaagent:D:/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=spring-boot-demo-V3.5.7 -Dskywalking.collector.backend_service=127.0.0.1:21800
    

注意:Windows 在 IDEA 中要用 / 而不是 \,否则可能无法识别路径。

2 Windows:使用 java -jar 方式启动

假设你的 jar 是:

D:\project\my-app.jar

SkyWalking Agent 放在:

D:\skywalking-agent\

启动命令:

java -javaagent:D:\skywalking-agent\skywalking-agent.jar -Dskywalking.agent.service_name=my-app -Dskywalking.collector.backend_service=127.0.0.1:21800 -jar D:\project\my-app.jar

验证是否成功接入 SkyWalking

查看 SkyWalking UI

http://localhost:28080/

应看到:

  • 服务列表出现 my-app
  • 有 JVM 信息(CPU、内存、GC)
  • 有链路(如 MySQL、Elasticsearch、HTTP 请求)

在这里插入图片描述


Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐