89 lines
2.9 KiB
Docker
89 lines
2.9 KiB
Docker
FROM grafana/grafana:11.1.0
|
|
|
|
USER root
|
|
|
|
# 构建参数:是否使用内网镜像
|
|
ARG USE_INTRANET=false
|
|
|
|
# 根据是否为内网构建切换 apk 源
|
|
RUN if [ "$USE_INTRANET" = "true" ]; then \
|
|
echo "Configuring intranet apk repositories..." && \
|
|
sed -i 's#https\?://[^/]\+#http://10.68.64.1#g' /etc/apk/repositories; \
|
|
else \
|
|
echo "Configuring public apk repositories..." && \
|
|
sed -i 's#https\?://[^/]\+#https://mirrors.aliyun.com#g' /etc/apk/repositories; \
|
|
fi
|
|
|
|
# 安装必要的工具
|
|
RUN apk add --no-cache \
|
|
supervisor \
|
|
net-tools \
|
|
iputils \
|
|
vim \
|
|
bash
|
|
|
|
# 部署镜像时恢复到部署侧使用的内网镜像源
|
|
RUN if [ "$USE_INTRANET" = "true" ]; then \
|
|
sed -i 's#https\?://[^/]\+#https://10.92.132.52/mirrors#g' /etc/apk/repositories; \
|
|
fi
|
|
|
|
# supervisor 日志目录
|
|
RUN mkdir -p /var/log/supervisor
|
|
|
|
# 设置 Grafana 基础路径环境变量
|
|
ENV GRAFANA_BASE_PATH=/private/argus/metric/grafana
|
|
|
|
# 设置用户和组ID环境变量
|
|
ARG ARGUS_BUILD_UID=2133
|
|
ARG ARGUS_BUILD_GID=2015
|
|
|
|
ENV ARGUS_BUILD_UID=${ARGUS_BUILD_UID} \
|
|
ARGUS_BUILD_GID=${ARGUS_BUILD_GID}
|
|
|
|
# 创建基本目录结构
|
|
RUN mkdir -p /private/argus/etc \
|
|
&& mkdir -p ${GRAFANA_BASE_PATH}/data \
|
|
&& mkdir -p ${GRAFANA_BASE_PATH}/logs \
|
|
&& mkdir -p ${GRAFANA_BASE_PATH}/plugins \
|
|
&& mkdir -p ${GRAFANA_BASE_PATH}/provisioning/datasources \
|
|
&& mkdir -p ${GRAFANA_BASE_PATH}/provisioning/dashboards \
|
|
&& mkdir -p ${GRAFANA_BASE_PATH}/data/sessions \
|
|
&& mkdir -p ${GRAFANA_BASE_PATH}/data/dashboards \
|
|
&& mkdir -p ${GRAFANA_BASE_PATH}/config \
|
|
&& mkdir -p /etc/grafana \
|
|
&& mkdir -p /var/lib/grafana \
|
|
&& mkdir -p /var/log/grafana
|
|
|
|
# 修改 Grafana 用户 UID/GID 并授权
|
|
RUN deluser grafana && \
|
|
addgroup -g ${ARGUS_BUILD_GID} grafana && \
|
|
adduser -u ${ARGUS_BUILD_UID} -G grafana -s /bin/sh -D grafana && \
|
|
chown -R grafana:grafana /var/lib/grafana /etc/grafana /var/log/grafana ${GRAFANA_BASE_PATH}
|
|
|
|
# 复制配置文件到容器内临时位置
|
|
COPY grafana.ini /tmp/grafana.ini
|
|
COPY datasources/datasources.yml /tmp/datasources.yml
|
|
COPY dashboards/dashboards.yml /tmp/dashboards.yml
|
|
COPY dashboards/default_dashboard_by_hostname.json /tmp/default_dashboard.json
|
|
COPY dashboards/default_cluster_dashboard.json /tmp/default_cluster_dashboard.json
|
|
COPY dashboards/default_dashboard_by_instance.json /tmp/default_dashboard_by_instance.json
|
|
|
|
# supervisor 配置
|
|
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
|
|
|
# 启动脚本
|
|
COPY start-grafana-supervised.sh /usr/local/bin/start-grafana-supervised.sh
|
|
RUN chmod +x /usr/local/bin/start-grafana-supervised.sh
|
|
|
|
# 确保配置文件权限正确
|
|
RUN chown -R grafana:grafana /etc/grafana
|
|
|
|
COPY dns-monitor.sh /usr/local/bin/dns-monitor.sh
|
|
RUN chmod +x /usr/local/bin/dns-monitor.sh
|
|
|
|
USER root
|
|
|
|
EXPOSE 3000
|
|
|
|
ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf", "-n"]
|