场景描述
在CI/CD的场景下,从代码提交合并到自动打包构建,会分好几个阶段,例如:git push -> 代码规范检查 -> sonar 扫描 -> maven 打包 --> docker 打包镜像 -> docker push harbor。在这里如果自动触发构建不做过多赘述(Jenkins内容,感兴趣的自行了解),这里只做Dockerfile 分阶段构建镜像的说明。
2025年3月19日大约 2 分钟
在CI/CD的场景下,从代码提交合并到自动打包构建,会分好几个阶段,例如:git push -> 代码规范检查 -> sonar 扫描 -> maven 打包 --> docker 打包镜像 -> docker push harbor。在这里如果自动触发构建不做过多赘述(Jenkins内容,感兴趣的自行了解),这里只做Dockerfile 分阶段构建镜像的说明。
版本:
elasticsearch-oss:7.4.2skywalking-oap-server:10.1.0skywalking-ui:10.1.0docker-compose.yaml 文件
version: '3.8'
services:
elasticsearch:
image: elasticsearch/elasticsearch-oss:7.4.2
container_name: elasticsearch
ports:
- "9200:9200"
- "9300:9300"
networks:
- sw
healthcheck:
test: [ "CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
environment:
- discovery.type=single-node
#锁定物理内存地址,防止es内存被交换出去,也就是避免es使用swap交换分区,频繁的交换,会导致IOPS变高
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "TZ=Asia/Shanghai"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /data/elasticsearch/data:/usr/share/elasticsearch/data
#- /data/elasticsearch/logs:/usr/share/elasticsearch/logs
oap-server:
image: apache/skywalking-oap-server:10.1.0
container_name: oap-server
depends_on:
- elasticsearch
ports:
- "11800:11800"
- "12800:12800"
networks:
- sw
healthcheck:
test: [ "CMD-SHELL", "curl http://localhost:12800/internal/l7check" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
links:
- elasticsearch
environment:
SW_HEALTH_CHECKER: default
SW_TELEMETRY: prometheus
JAVA_OPTS: "-Xms2048m -Xmx2048m"
SW_STORAGE: elasticsearch
SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
ui:
image: apache/skywalking-ui:10.1.0
container_name: ui
depends_on:
- oap-server
links:
- oap-server
ports:
- "8080:8080"
networks:
- sw
environment:
SW_OAP_ADDRESS: http://oap-server:12800
SW_ZIPKIN_ADDRESS: http://oap-server:9412
networks:
sw:
应用场景:当我们的环境无法访问互联网镜像库的时候,我们就需要手动上传基础镜像,才能完成镜像的构建和运行。
镜像导出
docker save -o images.tar [image:tag]
自定义skywalking agent java 基础镜像
版本:
10.3.010.3.09.3.0下载以及前期准备工作移步:Skywalking agent Java
要求
java8 作为基础镜像spring boot项目构建为docker 镜像vmargs、args场景描述
开发完成后,只需要手动打包为
jar或者通过jenkins进行编译打包为jar一次即可,即里面的项目配置通过外部配置进行覆盖,比如,在将jar打包为docker镜像时,将应用本身的配置覆盖,程序员不需要关注各个环境的部署配置,只关注业务开发(开发环境)。