diff --git a/Dockerfile b/Dockerfile index 878b72f..05eb3c4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,14 +19,8 @@ WORKDIR /app COPY --from=builder /app/nats-ui ./ -# config.yaml is in .gitignore; create default in image (override via volume at runtime) -RUN printf '%s\n' \ - 'nats_url: "nats://localhost:4222"' \ - 'subjects: ">"' \ - 'port: "8080"' \ - 'max_messages: 1000' \ - > config.yaml - +# Конфиг только внешний: не встраивается в образ. При запуске обязательно монтировать config.yaml: +# docker run -v /path/to/config.yaml:/app/config.yaml ... RUN chmod +x nats-ui && chown -R appuser:appuser /app EXPOSE 8080 diff --git a/main.go b/main.go index 47fb6de..dcfb4c1 100644 --- a/main.go +++ b/main.go @@ -231,7 +231,7 @@ func extractProducerFromPayload(data []byte) string { func loadConfig(filename string) (*Config, error) { data, err := os.ReadFile(filename) if err != nil { - return nil, fmt.Errorf("failed to read config file: %w", err) + return nil, err } var config Config if err := yaml.Unmarshal(data, &config); err != nil { @@ -259,6 +259,9 @@ func main() { } config, err := loadConfig(configFile) if err != nil { + if os.IsNotExist(err) { + log.Fatalf("Config file not found: %s (config must be an external file). Create it or run: %s /path/to/config.yaml", configFile, os.Args[0]) + } log.Fatalf("Failed to load config: %v", err) } log.Printf("Loaded configuration from %s", configFile)