plura/Dockerfile

52 lines
922 B
Docker

FROM rust:1.92 AS builder
ARG APP_NAME=plura
WORKDIR /app
RUN apt-get update && \
apt-get install -y \
clang \
llvm-dev \
libclang-dev \
pkg-config \
sqlite3 \
libsqlite3-dev \
git \
musl-tools
COPY . .
ENV SQLX_OFFLINE=true
RUN rustup target add x86_64-unknown-linux-musl && \
cargo build --release --target x86_64-unknown-linux-musl && \
cp ./target/x86_64-unknown-linux-musl/release/$APP_NAME /bin/server
FROM alpine:latest AS final
ARG UID=10001
# create non-root user
RUN adduser \
--disabled-password \
--gecos "" \
--home "/nonexistent" \
--shell "/sbin/nologin" \
--no-create-home \
--uid "${UID}" \
appuser
# create app + data dirs
WORKDIR /app
RUN mkdir -p /data && \
chown -R appuser:appuser /app /data
# copy binary
COPY --from=builder /bin/server /app/plura
# switch to non-root
USER appuser
EXPOSE 8080
CMD ["./plura"]