mirror of
https://github.com/garethgeorge/backrest.git
synced 2025-12-13 09:15:39 +00:00
fix: add docker entrypoint to set appropriate defaults for env vars
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
FROM golang:1.24-alpine AS builder
|
||||||
|
WORKDIR /src
|
||||||
|
COPY . .
|
||||||
|
RUN go build -o /docker-entrypoint cmd/docker-entrypoint/main.go
|
||||||
|
|
||||||
FROM alpine:latest
|
FROM alpine:latest
|
||||||
LABEL org.opencontainers.image.source="https://github.com/garethgeorge/backrest"
|
LABEL org.opencontainers.image.source="https://github.com/garethgeorge/backrest"
|
||||||
RUN apk --no-cache add tini ca-certificates curl bash rclone openssh tzdata docker-cli
|
RUN apk --no-cache add tini ca-certificates curl bash rclone openssh tzdata docker-cli
|
||||||
@@ -6,5 +11,7 @@ COPY backrest /backrest
|
|||||||
RUN /backrest --install-deps-only
|
RUN /backrest --install-deps-only
|
||||||
RUN mkdir -p /bin && mv /root/.local/share/backrest/restic /bin/restic
|
RUN mkdir -p /bin && mv /root/.local/share/backrest/restic /bin/restic
|
||||||
|
|
||||||
ENTRYPOINT ["/sbin/tini", "--"]
|
COPY --from=builder /docker-entrypoint /docker-entrypoint
|
||||||
CMD ["/backrest", "--bind-address", ":9898"]
|
|
||||||
|
ENTRYPOINT ["/sbin/tini", "--", "/docker-entrypoint"]
|
||||||
|
CMD ["/backrest"]
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
FROM golang:1.24-alpine AS builder
|
||||||
|
WORKDIR /src
|
||||||
|
COPY . .
|
||||||
|
RUN go build -o /docker-entrypoint cmd/docker-entrypoint/main.go
|
||||||
|
|
||||||
FROM alpine:latest AS alpine
|
FROM alpine:latest AS alpine
|
||||||
RUN apk add --no-cache ca-certificates tini-static
|
RUN apk add --no-cache ca-certificates tini-static
|
||||||
RUN mkdir /tmp-orig
|
RUN mkdir /tmp-orig
|
||||||
@@ -13,5 +18,7 @@ COPY --from=alpine /bin /bin
|
|||||||
COPY --from=alpine /sbin/tini-static /tini
|
COPY --from=alpine /sbin/tini-static /tini
|
||||||
COPY backrest /backrest
|
COPY backrest /backrest
|
||||||
|
|
||||||
ENTRYPOINT ["/tini", "--"]
|
COPY --from=builder /docker-entrypoint /docker-entrypoint
|
||||||
CMD ["/backrest", "--bind-address", ":9898"]
|
|
||||||
|
ENTRYPOINT ["/tini", "--", "/docker-entrypoint"]
|
||||||
|
CMD ["/backrest"]
|
||||||
|
|||||||
43
cmd/docker-entrypoint/main.go
Normal file
43
cmd/docker-entrypoint/main.go
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
)
|
||||||
|
|
||||||
|
var dockerEnvVarDefaults = map[string]string{
|
||||||
|
"BACKREST_PORT": "0.0.0.0:9898",
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var defaultedVariables []string
|
||||||
|
for key, value := range dockerEnvVarDefaults {
|
||||||
|
if os.Getenv(key) == "" {
|
||||||
|
os.Setenv(key, value)
|
||||||
|
defaultedVariables = append(defaultedVariables, fmt.Sprintf("%s=%q", key, value))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(defaultedVariables) > 0 {
|
||||||
|
os.Stderr.WriteString("Setting docker defaults for env variables:\n")
|
||||||
|
for _, key := range defaultedVariables {
|
||||||
|
os.Stderr.WriteString(" - " + key + "\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(os.Args) < 1 {
|
||||||
|
os.Stderr.WriteString("No command provided to run.\n")
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd := exec.Command(os.Args[0], os.Args[1:]...)
|
||||||
|
cmd.Stdout = os.Stdout
|
||||||
|
cmd.Stderr = os.Stderr
|
||||||
|
cmd.Stdin = os.Stdin
|
||||||
|
|
||||||
|
if err := cmd.Run(); err != nil {
|
||||||
|
if exitError, ok := err.(*exec.ExitError); ok {
|
||||||
|
os.Exit(exitError.ExitCode())
|
||||||
|
}
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user