From 3cd9c2e9c889fce21b09decbf5204fe40a29ca5b Mon Sep 17 00:00:00 2001 From: chermack <505360893@qq.com> Date: Sun, 26 Jul 2026 05:06:15 +0800 Subject: [PATCH] fix: expose Trojan logs and build metadata --- Dockerfile | 4 +++- trojan-master/asset/trojan.service | 2 +- trojan-master/util/linux.go | 9 ++++++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3572648..d0d01ed 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,6 @@ # syntax=docker/dockerfile:1 ARG RUNTIME_BASE=jrohy/trojan@sha256:f559fac7e9960614032e520c59405cec0e8937eca009a8169cb1d188f2b5ccb9 +ARG MANAGER_VERSION=2.0.0 FROM node:20.11.1-bookworm AS frontend WORKDIR /src COPY trojan-web-master/package.json trojan-web-master/package-lock.json ./ @@ -13,7 +14,8 @@ COPY trojan-master/go.mod trojan-master/go.sum ./ RUN go mod download COPY trojan-master/ ./ COPY --from=frontend /src/dist ./web/templates -RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags='-s -w' -o /out/trojan . +ARG MANAGER_VERSION +RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w -X trojan/trojan.MVersion=${MANAGER_VERSION} -X trojan/trojan.BuildDate=compat-image -X trojan/trojan.GoVersion=go1.21.6 -X trojan/trojan.GitVersion=local-build" -o /out/trojan . # Production builds pass an immutable, verified runtime snapshot that contains # the legacy Trojan core. This avoids a runtime download and preserves protocol diff --git a/trojan-master/asset/trojan.service b/trojan-master/asset/trojan.service index cb63dc9..88f38dd 100644 --- a/trojan-master/asset/trojan.service +++ b/trojan-master/asset/trojan.service @@ -5,7 +5,7 @@ After=network.target network-online.target nss-lookup.target mysql.service maria [Service] Type=simple StandardError=journal -ExecStart=/usr/bin/trojan/trojan /usr/local/etc/trojan/config.json +ExecStart=/bin/sh -c '/usr/bin/trojan/trojan /usr/local/etc/trojan/config.json >> /var/log/trojan.log 2>&1' ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure RestartSec=3s diff --git a/trojan-master/util/linux.go b/trojan-master/util/linux.go index 0f2878f..66a8f93 100644 --- a/trojan-master/util/linux.go +++ b/trojan-master/util/linux.go @@ -96,7 +96,14 @@ func Log(serviceName string, line int) { // LogChan 指定服务实时日志, 返回chan func LogChan(serviceName, param string, closeChan chan byte) (chan string, error) { - cmd := exec.Command("bash", "-c", fmt.Sprintf("journalctl -f -u %s -o cat %s", serviceName, param)) + logFile := fmt.Sprintf("/var/log/%s.log", serviceName) + command := fmt.Sprintf("journalctl -f -u %s -o cat %s", serviceName, param) + // docker-systemctl has no persistent journal. Compatibility images write + // service output to /var/log/.log instead. + if IsExists(logFile) { + command = fmt.Sprintf("tail %s -F %s", param, logFile) + } + cmd := exec.Command("bash", "-c", command) stdout, _ := cmd.StdoutPipe()