最终效果
-
官方最新版本
-
漏洞修复
-
支持/skywalking/bin/swctl health 监控检查
官方这个版本是不支持的,我们依旧坚挺~
-
确认可用
环境准备
-
JDK 11 (最新的代码要看最新的要求,注意不能使用JDK8,用错的话构建时也会有提示)
-
Maven >=3.6.0
官方指南(必看):https://github.com/apache/skywalking/blob/master/docs/en/guides/How-to-build.md
源码获取
mkdir -p /mnt/d/tmp/skywalking && cd /mnt/d/tmp/skywalking
#git clone --recurse-submodules https://github.com/apache/skywalking.git
git clone -b v10.0.1 --recurse-submodules https://github.com/apache/skywalking.git
精简镜像
-
官方镜像
-
简化镜像
-
镜像仓库里更小哦
Dockerfile
D:\tmp\skywalking\docker\oap\Dockerfile
ARG BASE_IMAGE='registry.cn-hangzhou.aliyuncs.com/earic/java:jre11.0.24-alpine3.20.2'
ARG SKYWALKING_CLI_VERSION
FROM apache/skywalking-cli:$SKYWALKING_CLI_VERSION as cli
ARG SKYWALKING_HOME='/skywalking'
WORKDIR $SKYWALKING_HOME
ARG DIST
COPY "$DIST" .
# 这里删,缓存不会带到$BASE_IMAGE里
RUN set -ex; \
tar -xzf "$DIST" --strip 1; \
rm -rf "$DIST"; \
rm -rf "config/log4j2.xml"; \
rm -rf "bin"; \
rm -rf "webapp"; \
rm -rf "agent";
FROM $BASE_IMAGE
ARG SKYWALKING_HOME='/skywalking'
WORKDIR $SKYWALKING_HOME
ENV PATH=$SKYWALKING_HOME/bin:$PATH
ENV JAVA_OPTS=" -Xms2G "
COPY --from=cli $SKYWALKING_HOME .
RUN set -ex; \
ls -alh; \
mkdir "bin"; \
rm -fr /var/cache/apk/* /usr/include /usr/share/man /tmp/*
COPY --from=cli /swctl ./bin
COPY log4j2.xml config/
COPY docker-entrypoint.sh .
RUN mkdir ext-config; \
mkdir ext-libs;
#非root--start --有安全需要再加,加了镜像会大100多M
RUN apk --no-cache add shadow
ENV NON_ROOT_USER=earic
ENV NON_ROOT_GID="103" \
NON_ROOT_UID="1003" \
NON_ROOT_WORK_DIR=/opt/local/\${NON_ROOT_USER} \
NON_ROOT_HOME_DIR=/home/${NON_ROOT_USER}
RUN groupadd -g ${NON_ROOT_GID} nonroot && useradd -m -s ${NON_ROOT_HOME_DIR} -u ${NON_ROOT_UID} ${NON_ROOT_USER} -g nonroot
#Add permission to non-root user
RUN mkdir -p /opt/app /skywalking/agent/logs/ && \\
touch /skywalking/agent/logs/skywalking-api.log && \\
chmod -R g+wx /opt /tmp/ /skywalking/agent/logs/ && \\
chown -R \${NON_ROOT_GID}:nonroot /opt /skywalking/agent/logs/
# 避免root用户运行。或者用entrypoint.sh+gosu实现(登录后是root,运行是非root) !!!!重点是这里
USER ${NON_ROOT_USER}
#非root--end
EXPOSE 12800 11800 1234
ENTRYPOINT ["bash", "docker-entrypoint.sh"]
发现漏洞
点我看原文https://mp.weixin.qq.com/s/_u9pX1VzrT9Wo2vCJHVqcQ?token=824336842&lang=zh_CN