Make sure the notifier can work inside Docker
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
e2301892bf
commit
66aed0f0da
5 changed files with 58 additions and 6 deletions
|
@ -21,7 +21,7 @@ steps:
|
|||
image: thegeeklab/drone-docker-buildx
|
||||
privileged: true
|
||||
settings:
|
||||
repo: git.faercol.me/faercol/telegram-notifier
|
||||
repo: git.faercol.me/notification/telegram-notifier
|
||||
tags: latest
|
||||
dry_run: true
|
||||
platforms:
|
||||
|
@ -37,7 +37,7 @@ steps:
|
|||
image: thegeeklab/drone-docker-buildx
|
||||
privileged: true
|
||||
settings:
|
||||
repo: git.faercol.me/faercol/telegram-notifier
|
||||
repo: git.faercol.me/notification/telegram-notifier
|
||||
registry: git.faercol.me
|
||||
tags: latest
|
||||
username:
|
||||
|
@ -73,7 +73,7 @@ steps:
|
|||
privileged: true
|
||||
settings:
|
||||
registry: git.faercol.me
|
||||
repo: git.faercol.me/faercol/teelgram-notifier
|
||||
repo: git.faercol.me/notification/telegram-notifier
|
||||
auto_tag: true
|
||||
platforms:
|
||||
- linux/amd64
|
||||
|
|
|
@ -10,7 +10,7 @@ FROM --platform=$TARGETPLATFORM alpine:latest
|
|||
WORKDIR /root
|
||||
COPY --from=builder go/src/git.faercol.me/telegram-notifier/build/notifier ./
|
||||
|
||||
VOLUME [ "/config" "/input" ]
|
||||
VOLUME [ "/config", "/input" ]
|
||||
|
||||
ENTRYPOINT [ "./notifier" ]
|
||||
CMD [ "-config", "/config/config.json" ]
|
||||
|
|
9
examples/docker-compose.yml
Normal file
9
examples/docker-compose.yml
Normal file
|
@ -0,0 +1,9 @@
|
|||
services:
|
||||
telegram_exporter:
|
||||
container_name: telegram_exporter
|
||||
image: git.faercol.me/notification/telegram-notifier:latest
|
||||
environment:
|
||||
- SOCK_PATH=/input/input.sock
|
||||
volumes:
|
||||
- ./build/config:/config
|
||||
- ./build/input:/input
|
|
@ -2,8 +2,11 @@ package config
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/fs"
|
||||
"os"
|
||||
"strconv"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
@ -46,20 +49,57 @@ func parseLevel(lvlStr string) logrus.Level {
|
|||
return logrus.InfoLevel
|
||||
}
|
||||
|
||||
var defaultConfig Config = Config{
|
||||
Telegram: TelegramConfig{
|
||||
ChannelID: 0,
|
||||
Token: "",
|
||||
},
|
||||
Log: LogConfig{
|
||||
Level: logrus.InfoLevel,
|
||||
},
|
||||
Listener: ListenerConfig{
|
||||
SockPath: "input/notifier.sock",
|
||||
},
|
||||
}
|
||||
|
||||
func checkOverride(conf *Config) {
|
||||
if val, ok := os.LookupEnv("LOG_LEVEL"); ok {
|
||||
conf.Log.Level = parseLevel(val)
|
||||
}
|
||||
if val, ok := os.LookupEnv("SOCK_PATH"); ok {
|
||||
conf.Listener.SockPath = val
|
||||
}
|
||||
if val, ok := os.LookupEnv("TELEGRAM_CHANNEL_ID"); ok {
|
||||
if intVal, err := strconv.Atoi(val); err == nil {
|
||||
conf.Telegram.ChannelID = int64(intVal)
|
||||
}
|
||||
}
|
||||
if val, ok := os.LookupEnv("TELEGRAM_TOKEN"); ok {
|
||||
conf.Telegram.Token = val
|
||||
}
|
||||
}
|
||||
|
||||
func New(filepath string) (*Config, error) {
|
||||
content, err := os.ReadFile(filepath)
|
||||
if err != nil {
|
||||
if errors.Is(err, fs.ErrNotExist) {
|
||||
conf := defaultConfig
|
||||
checkOverride(&conf)
|
||||
return &conf, nil
|
||||
}
|
||||
return nil, fmt.Errorf("failed to read config file %q: %w", filepath, err)
|
||||
}
|
||||
var jsonConf jsonConfig
|
||||
if err := json.Unmarshal(content, &jsonConf); err != nil {
|
||||
return nil, fmt.Errorf("failed to parse config file: %w", err)
|
||||
}
|
||||
return &Config{
|
||||
conf := &Config{
|
||||
Telegram: jsonConf.Telegram,
|
||||
Log: LogConfig{
|
||||
Level: parseLevel(jsonConf.Log.Level),
|
||||
},
|
||||
Listener: jsonConf.Listener,
|
||||
}, nil
|
||||
}
|
||||
checkOverride(conf)
|
||||
return conf, nil
|
||||
}
|
||||
|
|
|
@ -29,6 +29,9 @@ func New(sockPath string) (*Listener, error) {
|
|||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to create unix socket: %w", err)
|
||||
}
|
||||
if err := os.Chmod(sockPath, 0o777); err != nil {
|
||||
return nil, fmt.Errorf("failed to set permissions to unix socket: %w", err)
|
||||
}
|
||||
|
||||
m := http.NewServeMux()
|
||||
|
||||
|
|
Loading…
Reference in a new issue