diff --git a/Dockerfile b/Dockerfile index a4a5e7b..7d4cab8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,7 +32,7 @@ RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main ./cmd/main.g FROM alpine:latest -RUN apk --no-cache add ca-certificates tzdata +RUN apk --no-cache add ca-certificates tzdata su-exec RUN addgroup -g 1001 -S appgroup && \ adduser -u 1001 -S appuser -G appgroup @@ -41,14 +41,13 @@ WORKDIR /app COPY --from=backend-builder /app/main . COPY --from=backend-builder /app/config.yaml . +COPY docker-entrypoint.sh /usr/local/bin/ -RUN mkdir -p /app/data /app/uploads && \ +RUN chmod +x /usr/local/bin/docker-entrypoint.sh && \ + mkdir -p /app/data /app/uploads && \ chown -R appuser:appgroup /app -USER appuser - EXPOSE 8080 -VOLUME ["/app/uploads"] - +ENTRYPOINT ["docker-entrypoint.sh"] CMD ["./main"] diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 53b50d3..aca0d96 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -8,4 +8,3 @@ services: volumes: - ./data:/app/data - ./uploads:/app/uploads - user: "0:0" diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100644 index 0000000..02ac7c4 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,14 @@ +#!/bin/sh +set -e + +DATA_DIR="/app/data" +UPLOADS_DIR="/app/uploads" + +mkdir -p "$DATA_DIR" "$UPLOADS_DIR" + +if [ "$(id -u)" = "0" ]; then + chown -R appuser:appgroup "$DATA_DIR" "$UPLOADS_DIR" + exec su-exec appuser "$@" +else + exec "$@" +fi