dev_1.0.0_xuxt_2 更新反向代理,打包镜像,以及README文档 (#28)

Co-authored-by: xiuting.xu <xiutingxt.xu@gmail.com>
Reviewed-on: #28
Reviewed-by: yuyr <yuyr@zgclab.edu.cn>
Reviewed-by: huhy <husteryezi@163.com>
Reviewed-by: sundapeng <sundp@mail.zgclab.edu.cn>
This commit was merged in pull request #28.
This commit is contained in:
2025-10-20 09:45:32 +08:00
parent 1a768bc837
commit d1b89c0cf6
37 changed files with 372 additions and 230 deletions

View File

@@ -24,8 +24,10 @@ RUN apt-get update && \
apt-get clean && rm -rf /var/lib/apt/lists/*
ENV FRONTEND_BASE_PATH=/private/argus/web/frontend
ENV ARGUS_UID=2133
ENV ARGUS_GID=2015
ARG ARGUS_UID=2133
ARG ARGUS_GID=2015
ENV ARGUS_UID=${ARGUS_UID}
ENV ARGUS_GID=${ARGUS_GID}
RUN mkdir -p ${FRONTEND_BASE_PATH} && \
mkdir -p /private/argus/etc
@@ -82,7 +84,7 @@ COPY src/web/build_tools/frontend/health-check.sh /usr/local/bin/health-check.sh
RUN chmod +x /usr/local/bin/health-check.sh
# 暴露端口
EXPOSE 80
EXPOSE 8080
# 保持 root 用户,由 supervisor 控制 user 切换
USER root

View File

@@ -1,4 +1,10 @@
docker pull node:20
docker pull ubuntu:24.04
docker build -f src/web/build_tools/frontend/Dockerfile -t argus-web:0.1.1 .
rm -f argus-web-0.1.1.tar && sudo docker image save argus-web:0.1.1 > argus-web-0.1.1.tar
source src/web/tests/.env
docker build \
--build-arg ARGUS_UID=${ARGUS_UID} \
--build-arg ARGUS_GID=${ARGUS_GID} \
-f src/web/build_tools/frontend/Dockerfile -t argus-web-frontend:latest .
docker save -o argus-web-frontend-latest.tar argus-web-frontend:latest

View File

@@ -1,7 +1,7 @@
#!/bin/bash
set -euo pipefail
URL="http://127.0.0.1:80"
URL="http://127.0.0.1:8080"
echo "[INFO] Starting Argus web health check loop for $URL..."

View File

@@ -12,7 +12,7 @@ http {
# React 前端服务
server {
listen 80;
listen 8080;
server_name web.argus.com;
root /usr/share/nginx/html;
@@ -25,32 +25,4 @@ http {
}
# Master 服务,需要增加 CORS 支持
server {
listen 80;
server_name master.argus.com;
location / {
proxy_pass http://master.argus.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# CORS 支持
add_header 'Access-Control-Allow-Origin' 'http://web.argus.com' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Origin, Content-Type, Accept, Authorization' always;
if ($request_method = OPTIONS) {
add_header 'Access-Control-Allow-Origin' 'http://web.argus.com' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Origin, Content-Type, Accept, Authorization' always;
add_header 'Content-Length' 0;
add_header 'Content-Type' 'text/plain';
return 204;
}
}
}
}

View File

@@ -8,20 +8,12 @@ DNS_SCRIPT="${DNS_DIR}/update-dns.sh"
DOMAIN=web.argus.com
WEB_DOMAIN_FILE="${DNS_DIR}/${DOMAIN}"
RUNTIME_USER="${ARGUS_RUNTIME_USER:-argus}"
RUNTIME_UID="${ARGUS_BUILD_UID:-2133}"
RUNTIME_GID="${ARGUS_BUILD_GID:-2015}"
RUNTIME_UID="${ARGUS_UID:-2133}"
RUNTIME_GID="${ARGUS_GID:-2015}"
mkdir -p "$DNS_DIR"
chown -R "$RUNTIME_UID:$RUNTIME_GID" "$DNS_DIR" 2>/dev/null || true
if [[ -x "$DNS_SCRIPT" ]]; then
echo "[INFO] Running update-dns.sh before master starts"
# 若脚本存在则执行,保证容器使用 bind 作为 DNS
"$DNS_SCRIPT" || echo "[WARN] update-dns.sh execution failed"
else
echo "[WARN] DNS update script not found or not executable: $DNS_SCRIPT"
fi
# 记录容器 IP
IP=$(ifconfig | grep -A 1 eth0 | grep inet | awk '{print $2}' || true)
@@ -32,6 +24,7 @@ if [[ -n "${IP}" ]]; then
else
echo "[WARN] Failed to detect web IP via ifconfig"
fi
chmod 755 "$WEB_DOMAIN_FILE"
echo "[INFO] Launching nginx..."

View File

@@ -8,8 +8,10 @@ RUN apt-get update && \
apt-get clean && rm -rf /var/lib/apt/lists/*
ENV FRONTEND_BASE_PATH=/private/argus/web/proxy
ENV ARGUS_UID=2133
ENV ARGUS_GID=2015
ARG ARGUS_UID=2133
ARG ARGUS_GID=2015
ENV ARGUS_UID=${ARGUS_UID}
ENV ARGUS_GID=${ARGUS_GID}
RUN mkdir -p ${FRONTEND_BASE_PATH} && \
mkdir -p /private/argus/etc

View File

@@ -0,0 +1,9 @@
docker pull ubuntu:24.04
source src/web/tests/.env
docker build \
--build-arg ARGUS_UID=${ARGUS_UID} \
--build-arg ARGUS_GID=${ARGUS_GID} \
-f src/web/build_tools/proxy/Dockerfile -t argus-web-proxy:latest .
docker save -o argus-web-proxy-latest.tar argus-web-proxy:latest

View File

@@ -3,6 +3,7 @@ server {
server_name alertmanager.alert.argus.com;
location / {
proxy_pass http://alertmanager.alert.argus.com:9093;
set $alert_backend http://alertmanager.alert.argus.com:9093;
proxy_pass $alert_backend;
}
}

View File

@@ -4,7 +4,8 @@ server {
server_name es.log.argus.com;
location / {
proxy_pass http://es.log.argus.com;
set $es_backend http://es.log.argus.com:9200;
proxy_pass $es_backend;
}
}
@@ -14,6 +15,7 @@ server {
server_name kibana.log.argus.com;
location / {
proxy_pass http://kibana.log.argus.com;
set $kibana_backend http://kibana.log.argus.com:5601;
proxy_pass $kibana_backend;
}
}

View File

@@ -3,25 +3,25 @@ server {
server_name master.argus.com;
location / {
# proxy_pass http://master.argus.com;
proxy_pass http://master.argus.com;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Proto $scheme;
set $master_backend http://master.argus.com:3000;
proxy_pass $master_backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# # CORS 支持
# add_header 'Access-Control-Allow-Origin' 'http://web.argus.com' always;
# add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
# add_header 'Access-Control-Allow-Headers' 'Origin, Content-Type, Accept, Authorization' always;
# CORS 支持
add_header 'Access-Control-Allow-Origin' 'http://web.argus.com' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Origin, Content-Type, Accept, Authorization' always;
# if ($request_method = OPTIONS) {
# add_header 'Access-Control-Allow-Origin' 'http://web.argus.com' always;
# add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
# add_header 'Access-Control-Allow-Headers' 'Origin, Content-Type, Accept, Authorization' always;
# add_header 'Content-Length' 0;
# add_header 'Content-Type' 'text/plain';
# return 204;
# }
if ($request_method = OPTIONS) {
add_header 'Access-Control-Allow-Origin' 'http://web.argus.com' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Origin, Content-Type, Accept, Authorization' always;
add_header 'Content-Length' 0;
add_header 'Content-Type' 'text/plain';
return 204;
}
}
}

View File

@@ -4,16 +4,18 @@ server {
server_name prometheus.metric.argus.com;
location / {
proxy_pass http://prom.metric.argus.com;
set $prom_backend http://prom.metric.argus.com:9090;
proxy_pass $prom_backend;
}
}
# # Grafana
# server {
# listen 80;
# server_name grafana.metric.argus.com;
# Grafana
server {
listen 80;
server_name grafana.metric.argus.com;
# location / {
# proxy_pass http://grafana.metric.argus.com;
# }
# }
location / {
set $grafana_backend http://grafana.metric.argus.com:3000;
proxy_pass $grafana_backend;
}
}

View File

@@ -3,6 +3,7 @@ server {
server_name web.argus.com;
location / {
proxy_pass http://web.argus.com:80;
set $web_backend http://web.argus.com:8080;
proxy_pass $web_backend;
}
}

View File

@@ -5,14 +5,6 @@ events {
worker_connections 1024;
}
server {
listen 80 default_server;
server_name _;
location / {
proxy_pass http://web.argus.com:80;
}
}
http {
include mime.types;
@@ -32,5 +24,16 @@ http {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
server {
listen 80 default_server;
server_name _;
location / {
set $web_backend http://web.argus.com:8080;
proxy_pass $web_backend;
}
}
include /etc/nginx/conf.d/*.conf;
}

View File

@@ -9,8 +9,8 @@ DNS_CONF_PRIVATE="/private/argus/etc/dns.conf"
DNS_CONF_SYSTEM="/etc/resolv.conf"
DNS_DIR="/private/argus/etc"
DNS_SCRIPT="${DNS_DIR}/update-dns.sh"
RUNTIME_UID="${ARGUS_BUILD_UID:-2133}"
RUNTIME_GID="${ARGUS_BUILD_GID:-2015}"
RUNTIME_UID="${ARGUS_UID:-2133}"
RUNTIME_GID="${ARGUS_GID:-2015}"
mkdir -p "$DNS_DIR"
chown -R "$RUNTIME_UID:$RUNTIME_GID" "$DNS_DIR" 2>/dev/null || true