Mac下Docker+SpringBoot整合看这个

本文详细介绍了如何使用Docker容器化SpringBoot应用,包括安装配置Docker、使用Maven插件构建Docker镜像及运行容器的全过程。通过实践操作,读者将学会如何在本地环境中快速部署和运行SpringBoot项目。

在危机时更要学习

在安装Docker前先安装Homebrew

在完成上述工作,输入

brew search docker

如下图所示:

brew search docker

然后执行:

brew cask install docker

等待安装完会在应用程序出现Docker图标,点击启动(启动完图标在右上角)

Docker图标

 

启动Docker

点击进入Preferences,配置阿里云镜像加速(可以去申请阿里云Docker镜像加速器)

配置加速器

 

 

安装activemq

在pull完查看存在的镜像

docker images

 

 

启动成功后,然后在IDEA里创建一个Maven 项目,这里我采用SpringBoot 快速搭建一个项目,

在Pom.xml中加入docker plugin

 <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.1.1</version>
                <configuration>
                    <!-- Dockerfile文件位置 -->
                    <dockerDirectory>${project.basedir}</dockerDirectory>
                    <!-- 镜像仓库:版本 -->
                    <imageName>registry.cn-shanghai.aliyuncs.com/ycmm/${project.artifactId}:${project.version}</imageName>
                    <!-- 强制覆盖 -->
                    <forceTags>true</forceTags>
                    <imageTags>
                        <imageTag>${project.version}</imageTag>
                    </imageTags>
                    <!-- 资源 -->
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                    <!-- 上传仓库认证 需要在Maven settiing.xml中配置 -->
                    <!--<serverId>docker-ali</serverId>-->
                    <!--<registryUrl>registry.cn-shanghai.aliyuncs.com</registryUrl>-->
                </configuration>
            </plugin>

docker-maven-plugin

然后在项目根目录(与src同级目录下)创建Dockerfile文件

 

项目结构

然后在DOckerfile填入以下内容(注意:demo-0.0.1-SNAPSHOT.jar是我最终打包的名称)

FROM codenvy/jdk8_maven3_tomcat8

VOLUME /tmp

ADD target/demo-0.0.1-SNAPSHOT.jar app.jar

#RUN sh -c 'touch /app.jar'

ENTRYPOINT [ "sh", "-c", "java  -jar /app.jar" ]

然后执行命令:

mvn clean package docker:build

执行成功后如果所示:

docker build

 

demo docker镜像

最后执行

 docker run -d -p 8080:8080 registry.cn-shanghai.aliyuncs.com/ycmm/demo:0.0.1-SNAPSHOT demo

docker ps 查看运行中的容器

 

最后时刻!

 

 

附上源码地址:https://github.com/wenzhihua555/docker-SpirngBoot.git
 

<think>我们正在整合SkyWalking到Spring Boot项目,并使用Elasticsearch作为存储后端。根据引用,我们需要完成以下步骤: 1. 准备工作:确保环境满足要求(JDK版本、下载SkyWalking、准备Elasticsearch)。 2. 配置SkyWalking后端(OAP服务器)以使用Elasticsearch存储。 3. 在Spring Boot应用中配置SkyWalking代理。 具体步骤: ### 1. 准备工作 - **JDK版本**:根据引用[4],如果使用Elasticsearch7,需要JDK 11+;否则JDK 8+。建议使用JDK 11或以上。 - **下载SkyWalking发行版**:从[Apache SkyWalking官网](https://skywalking.apache.org/downloads/)下载最新版本(如8.9.1)或与文档匹配的版本(引用中提到了6.6.0和最新版本,但配置类似)。 - **准备Elasticsearch**:安装并运行Elasticsearch(版本需与SkyWalking兼容,通常SkyWalking支持Elasticsearch 6.x, 7.x)。例如,使用Elasticsearch 7.x,则运行: ```bash # 使用Docker运行Elasticsearch(可选) docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.17.0 ``` 确保Elasticsearch可访问(如`http://localhost:9200`)。 ### 2. 配置SkyWalking后端(OAP服务器)使用Elasticsearch存储 根据引用[3]和[4],配置OAP服务器连接Elasticsearch。 - **修改OAP配置文件**:在SkyWalking发行版的`config/application.yml`中,设置存储为Elasticsearch,并配置集群节点。 ```yaml storage: selector: ${SW_STORAGE:elasticsearch7} # 使用elasticsearch7作为存储 elasticsearch7: nameSpace: ${SW_NAMESPACE:""} clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200} # 根据实际ES地址修改 protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"} # 其他配置如用户名密码等(如果ES有安全配置) # user: ${SW_ES_USER:""} # password: ${SW_ES_PASSWORD:""} ``` - **启动OAP服务器**:可以使用Docker(如引用[3])或直接运行: ```bash # 在SkyWalking目录下 bin/oapService.sh ``` 或者使用Docker(注意修改环境变量): ```bash docker run --name skywalking-oap -d \ -p 11800:11800 -p 12800:12800 \ --link elasticsearch:elasticsearch \ -e SW_STORAGE=elasticsearch7 \ -e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 \ apache/skywalking-oap-server:latest-es7 ``` ### 3. 启动SkyWalking UI(可选) - 可以单独启动UI来查看追踪数据,默认端口8080。 ```bash docker run --name skywalking-ui -d \ -p 8080:8080 \ --link skywalking-oap:skywalking-oap \ -e SW_OAP_ADDRESS=skywalking-oap:12800 \ apache/skywalking-ui ``` ### 4. Spring Boot应用集成SkyWalking代理 - **方式一:通过JVM参数启动**(推荐) 在启动Spring Boot应用时,添加JVM参数: ```bash java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar \ -Dskywalking.agent.service_name=your-service-name \ -Dskywalking.collector.backend_service=localhost:11800 \ -jar your-spring-boot-app.jar ``` 其中: - `-javaagent`:指定skywalking-agent.jar的路径(从SkyWalking发行版的`agent`目录获取) - `-Dskywalking.agent.service_name`:设置服务名 - `-Dskywalking.collector.backend_service`:OAP服务器地址(默认localhost:11800) - **方式二:通过环境变量配置** 设置环境变量: ```bash export SW_AGENT_NAME=your-service-name export SW_AGENT_COLLECTOR_BACKEND_SERVICES=localhost:11800 ``` 然后启动时加上`-javaagent`参数(同上)。 ### 5. 验证 - 启动Spring Boot应用,访问几个接口。 - 打开SkyWalking UI(`http://localhost:8080`),查看服务是否出现,以及是否有追踪数据。 ### 注意事项 - 如果Elasticsearch有安全认证(如用户名密码),需要在OAP配置文件中配置(引用[3]中未体现,但引用[4]提到可能需要)。 - 确保OAP服务器能访问Elasticsearch,以及Spring Boot应用能访问OAP服务器(端口11800)。 ### 配置示例(Elasticsearch安全配置) 如果Elasticsearch启用了安全认证(如X-Pack),在`application.yml`中配置: ```yaml storage: elasticsearch7: user: ${SW_ES_USER:""} password: ${SW_ES_PASSWORD:""} secretsManagementFile: ${SW_ES_SECRETS_MANAGEMENT_FILE:""} # 可选,用于管理密钥 ``` ### 引用说明 以上步骤参考了提供的引用内容,特别是: - 引用[3]提供了Docker运行OAP的命令,并指定了Elasticsearch存储。 - 引用[4]提到了JDK版本要求和端口信息。 - 引用[1]和[2]则强调了Spring Boot整合SkyWalking的便捷性。 请根据实际环境调整配置(如版本、地址、认证等)。 §§相关问题§§ 1. SkyWalking如何实现分布式追踪? 2. 如何配置SkyWalking的采样率以减少数据量? 3. 在Docker容器中运行Spring Boot应用时如何集成SkyWalking代理? 4. 如何解决SkyWalking与Elasticsearch之间的连接问题?</think>### Spring Boot 集成 SkyWalking 配置 Elasticsearch 存储 #### 1. **环境准备** - **JDK 版本**:确保 JDK 8+(若使用 Elasticsearch 7,需 JDK 11+)[^4] - **下载组件**: - [SkyWalking 发行版](https://skywalking.apache.org/downloads/) - [Elasticsearch](https://www.elastic.co/downloads/elasticsearch)(推荐 7.x 版本) - **端口规划**: - `11800`:SkyWalking OAP gRPC 通信端口 - `12800`:SkyWalking OAP HTTP 通信端口 - `9200`:Elasticsearch 服务端口 #### 2. **配置 Elasticsearch** 在 `elasticsearch.yml` 中启用跨域(可选): ```yaml http.cors.enabled: true http.cors.allow-origin: "*" ``` 启动 Elasticsearch: ```bash ./bin/elasticsearch # Linux/Mac ``` #### 3. **配置 SkyWalking OAP 服务** 修改 SkyWalking 的 `config/application.yml`: ```yaml storage: selector: ${SW_STORAGE:elasticsearch7} # 指定存储类型 elasticsearch7: nameSpace: ${SW_NAMESPACE:""} clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200} # ES地址 protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"} # 安全认证(若ES启用) user: ${SW_ES_USER:""} password: ${SW_ES_PASSWORD:""} ``` > 注:变量可通过环境变量或启动参数传入[^3][^4] #### 4. **启动 SkyWalking OAP** ```bash # 使用环境变量启动 docker run -d --name skywalking-oap \ -p 11800:11800 -p 12800:12800 \ -e SW_STORAGE=elasticsearch7 \ -e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 \ apache/skywalking-oap-server:9.7.0-es7 ``` 或直接运行二进制包: ```bash bin/oapService.sh ``` #### 5. **Spring Boot 集成 SkyWalking Agent** 1. **下载 Agent**: 从 SkyWalking 发行版解压 `agent/` 目录 2. **启动应用时挂载 Agent**: ```bash java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar \ -Dskywalking.agent.service_name=your_service_name \ -Dskywalking.collector.backend_service=localhost:11800 \ -jar your-spring-boot-app.jar ``` 3. **关键参数说明**: - `agent.service_name`:服务名称(在 SkyWalking UI 显示) - `collector.backend_service`:OAP 服务地址 - `logging.level`:Agent 日志级别(可选) #### 6. **验证配置** 1. 访问 SkyWalking UI(默认 `http://localhost:8080`) 2. 检查服务是否出现在服务列表中 3. 在 Elasticsearch 中验证数据生成: ```bash curl http://localhost:9200/_cat/indices?v ``` 应看到 `sw_*` 前缀的索引[^1] #### 常见问题解决 - **连接失败**:检查 OAP 日志,确认 ES 地址、端口、防火墙设置 - **版本兼容**:SkyWalking 8.9.0+ 需配合 ES 7.10+,低版本参考[官方兼容性矩阵](https://skywalking.apache.org/docs/main/latest/en/setup/backend/backend-storage/) - **性能调优**:调整 ES 的 `refresh_interval` 和分片数量[^1] --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值