Add Healthcheck; Search missing immediately (#36)
This commit is contained in:
23
Dockerfile
23
Dockerfile
@@ -19,16 +19,27 @@ ADD . .
|
|||||||
# Build
|
# Build
|
||||||
RUN CGO_ENABLED=0 GOOS=$(echo $TARGETPLATFORM | cut -d '/' -f1) GOARCH=$(echo $TARGETPLATFORM | cut -d '/' -f2) go build -ldflags="-X github.com/sirrobot01/debrid-blackhole/pkg/version.Version=${VERSION} -X github.com/sirrobot01/debrid-blackhole/pkg/version.Channel=${CHANNEL}" -o /blackhole
|
RUN CGO_ENABLED=0 GOOS=$(echo $TARGETPLATFORM | cut -d '/' -f1) GOARCH=$(echo $TARGETPLATFORM | cut -d '/' -f2) go build -ldflags="-X github.com/sirrobot01/debrid-blackhole/pkg/version.Version=${VERSION} -X github.com/sirrobot01/debrid-blackhole/pkg/version.Channel=${CHANNEL}" -o /blackhole
|
||||||
|
|
||||||
|
RUN CGO_ENABLED=0 GOOS=$(echo $TARGETPLATFORM | cut -d '/' -f1) GOARCH=$(echo $TARGETPLATFORM | cut -d '/' -f2) go build -o /healthcheck cmd/healthcheck/main.go
|
||||||
|
|
||||||
FROM alpine as logsetup
|
FROM alpine as logsetup
|
||||||
RUN mkdir -p /logs && \
|
ARG PUID=1000
|
||||||
touch /logs/decypharr.log && \
|
ARG PGID=1000
|
||||||
chmod -R 755 /logs && \
|
RUN addgroup -g $PGID appuser && \
|
||||||
chmod 666 /logs/decypharr.log
|
adduser -D -u $PUID -G appuser appuser && \
|
||||||
|
mkdir -p /logs && \
|
||||||
|
chown -R appuser:appuser /logs && \
|
||||||
|
mkdir -p /app && \
|
||||||
|
chown appuser:appuser /app
|
||||||
|
|
||||||
FROM gcr.io/distroless/static-debian12:latest
|
FROM gcr.io/distroless/static-debian12:latest
|
||||||
COPY --from=builder /blackhole /blackhole
|
COPY --from=builder /blackhole /blackhole
|
||||||
|
COPY --from=builder /healthcheck /healthcheck
|
||||||
COPY --from=builder /app/README.md /README.md
|
COPY --from=builder /app/README.md /README.md
|
||||||
|
COPY --from=logsetup /etc/passwd /etc/passwd
|
||||||
|
COPY --from=logsetup /etc/group /etc/group
|
||||||
COPY --from=logsetup /logs /logs
|
COPY --from=logsetup /logs /logs
|
||||||
|
COPY --from=logsetup /app /app
|
||||||
|
|
||||||
|
|
||||||
ENV LOG_PATH=/logs
|
ENV LOG_PATH=/logs
|
||||||
|
|
||||||
@@ -36,5 +47,9 @@ EXPOSE 8181 8282
|
|||||||
|
|
||||||
VOLUME ["/app"]
|
VOLUME ["/app"]
|
||||||
|
|
||||||
|
USER appuser
|
||||||
|
|
||||||
|
HEALTHCHECK CMD ["/healthcheck"]
|
||||||
|
|
||||||
# Run
|
# Run
|
||||||
CMD ["/blackhole", "--config", "/app/config.json"]
|
CMD ["/blackhole", "--config", "/app/config.json"]
|
||||||
|
|||||||
22
cmd/healthcheck/main.go
Normal file
22
cmd/healthcheck/main.go
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"cmp"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
port := cmp.Or(os.Getenv("QBIT_PORT"), "8282")
|
||||||
|
resp, err := http.Get("http://localhost:" + port + "/api/v2/app/version")
|
||||||
|
if err != nil {
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
if resp.StatusCode != http.StatusOK {
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
@@ -72,10 +72,6 @@ func (a *Arr) Repair(tmdbId string) error {
|
|||||||
getLogger().Info().Msgf("Found %d %s broken media files", len(brokenMedia), a.Type)
|
getLogger().Info().Msgf("Found %d %s broken media files", len(brokenMedia), a.Type)
|
||||||
|
|
||||||
// Automatic search for missing files
|
// Automatic search for missing files
|
||||||
for _, m := range brokenMedia {
|
|
||||||
getLogger().Debug().Msgf("Searching missing for %s", m.Title)
|
|
||||||
a.SearchMissing(m.Id)
|
|
||||||
}
|
|
||||||
getLogger().Info().Msgf("Repair completed for %s", a.Name)
|
getLogger().Info().Msgf("Repair completed for %s", a.Name)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -90,6 +86,7 @@ func (a *Arr) processMedia(media []Content) []Content {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if a.checkMediaFiles(m) {
|
if a.checkMediaFiles(m) {
|
||||||
|
a.SearchMissing(m.Id)
|
||||||
brokenMedia = append(brokenMedia, m)
|
brokenMedia = append(brokenMedia, m)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -118,6 +115,7 @@ func (a *Arr) processMedia(media []Content) []Content {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if a.checkMediaFilesParallel(m) {
|
if a.checkMediaFilesParallel(m) {
|
||||||
|
a.SearchMissing(m.Id)
|
||||||
results <- m
|
results <- m
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ type QBit struct {
|
|||||||
|
|
||||||
func NewQBit(config *common.Config, deb *debrid.DebridService, logger zerolog.Logger, arrs *arr.Storage) *QBit {
|
func NewQBit(config *common.Config, deb *debrid.DebridService, logger zerolog.Logger, arrs *arr.Storage) *QBit {
|
||||||
cfg := config.QBitTorrent
|
cfg := config.QBitTorrent
|
||||||
port := cmp.Or(cfg.Port, os.Getenv("QBIT_PORT"), "8182")
|
port := cmp.Or(cfg.Port, os.Getenv("QBIT_PORT"), "8282")
|
||||||
refreshInterval := cmp.Or(cfg.RefreshInterval, 10)
|
refreshInterval := cmp.Or(cfg.RefreshInterval, 10)
|
||||||
return &QBit{
|
return &QBit{
|
||||||
Username: cfg.Username,
|
Username: cfg.Username,
|
||||||
|
|||||||
Reference in New Issue
Block a user