skywalking学习之路之重新构建Skywalking-ui镜像

skywalking学习之路之重新构建Skywalking-ui镜像

心得

学习开源组件最好的方式是去官网,然后去Github源码仓库,以前觉得学习开源的东西很怕去看代码,怕看英文文档,经过这次skywalking的学习,我觉得学习开源组件或者比较新的组件,在中文学习资源比较匮乏的情况下还是要自己去Github仓库自己去看的。

skywalking代码仓库

先去Skywalking官网,然后点击github,进入源码仓库,详细阅读README文档,以后去看开源组件时一定详细阅读README文档,里面一般会告诉你如何编译打包这个工程,好一点的会提供给你打包镜像的方式。且看skywalking
skywalking readme文档截图
圈出来的地方就是编译工程详细描述的文档,继续点击进入
build skywalking
看到这里你也就知道如何去Build这个工程了,需要的编译环境是MAVEN3,JDK8,git。克隆下来仓库后,记得切换分支,切到你要编译的分支,我这边需要编译的分支是v6.1.0;

构建skywalking-ui镜像

先说下我为什么要重新构建skywaljing-ui镜像,其实skywalking项目已经提供了官方镜像,你会发现在工程中有一个docker文件夹,文件下有一个README文件,爱死README了,以后我写项目也要写README这样可以方便后来者。这个README文档内容如下:
docker
里面说了两种方式获取镜像,一个用docker compose自己打,一个去dockerhub上获取镜像,点击链接即可。我这边采用的方式是自己使用docker build命令制作镜像。我这边自己制作镜像的原因是,我们Paas平台需要嵌入skywalking,但是skywalking有个登录界面,我们不需要这个登陆界面,所以需要修改一些前端代码,重做镜像。紧接着,进入上图中的ui文件夹,里面有三个文件,看到dockerfile了,你就知道根据这个文件制作镜像就是妥妥的了。
在这里插入图片描述

解析Dcokerfile.ui文件

以下是dockerfile的内容:

FROM openjdk:8u181-jdk-stretch

ENV DIST_NAME=apache-skywalking-apm-bin \
    JAVA_OPTS=" -Xms256M " \
    SW_OAP_ADDRESS="127.0.0.1:12800" \
    SW_TIMEOUT="20000"

COPY "$DIST_NAME.tar.gz" /

RUN set -ex; \
    tar -xzf "$DIST_NAME.tar.gz"; \
    rm -rf "$DIST_NAME.tar.gz"; \
    rm -rf "$DIST_NAME/config"; \
    rm -rf "$DIST_NAME/bin"; rm -rf "$DIST_NAME/oap-libs"; rm -rf "$DIST_NAME/agent"; \
    mv "$DIST_NAME" skywalking;

WORKDIR skywalking

COPY docker-entrypoint.sh .
COPY logback.xml webapp/

EXPOSE 8080

ENTRYPOINT ["bash", "docker-entrypoint.sh"]

openjdk:8u181-jdk-stretch基础镜像,设置环境变量,压缩文件名称前缀,我们打包后在工程的dist文件夹下有个apache-skywalking-apm-bin.tar.gz文件,没编译打包是没有dist这个文件夹的,构建镜像签需要把apache-skywalking-apm-bin.tar.gz文件放在构建目录中。其他的环境变量就是JAVA_OPTS,oap地址等看一下就知道啥意思,剩下的命令就是解压打包文件,把源文件删除,拷贝docker-entrypoint.sh,logback.xml,启动命令时执行docker-entrypoint.sh脚本。接下来看一下docker-entrypoint.sh脚本,

#!/bin/bash

set -e

export LOGGING_CONFIG="webapp/logback.xml"

[[ ! -z "$SW_OAP_ADDRESS" ]] && export COLLECTOR_RIBBON_LISTOFSERVERS=${SW_OAP_ADDRESS} && echo "COLLECTOR_RIBBON_LISTOFSERVERS=$COLLECTOR_RIBBON_LISTOFSERVERS"
[[ ! -z "$SW_TIMEOUT" ]] && export COLLECTOR_RIBBON_READTIMEOUT=${SW_TIMEOUT} && echo "COLLECTOR_RIBBON_READTIMEOUT=$COLLECTOR_RIBBON_READTIMEOUT"

exec java -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -jar webapp/skywalking-webapp.jar "$@"

这个文件的主要内容就是启动jar包了。
其实你只要把Dockerfile.ui,docker-entrypoint.sh,logback.xml和apache-skywalking-apm-bin.tar.gz放在一个目录下,运行以下命令:

docker build -t skywalking-ui:lastest .

不出意外,镜像就打好了。

docker run --name skywalking-oap-ui --restart always -d -p 8991:8080  -e SW_OAP_ADDRESS=10.142.112.61:30382 skywalking-ui:lastest

运行以上命令,启动ui容器:

docker logs skywalking-oap-ui

看到以下日志说明你的ui镜像没问题,启动前确保oap已经启动了
Alt
我遇到的问题是:启动容器时报错:docker-entrypoint.sh: set: line 6: illegal option -
这时候你去注释掉docker-entrypoint.sh中的set -e就可以了。

猜你喜欢

转载自blog.csdn.net/u013276277/article/details/100807024