36 lines
		
	
	
		
			826 B
		
	
	
	
		
			Docker
		
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			826 B
		
	
	
	
		
			Docker
		
	
	
	
 | 
						|
FROM rust:latest AS chef
 | 
						|
RUN cargo install cargo-chef
 | 
						|
WORKDIR /app
 | 
						|
 | 
						|
FROM chef AS planner
 | 
						|
COPY . .
 | 
						|
RUN OFFLINE=true cargo chef prepare --bin mensa-upb-api --recipe-path recipe.json
 | 
						|
 | 
						|
FROM chef AS builder
 | 
						|
COPY --from=planner /app/recipe.json recipe.json
 | 
						|
RUN cargo chef cook --bin mensa-upb-api --release --recipe-path recipe.json
 | 
						|
COPY . .
 | 
						|
RUN OFFLINE=true cargo build --bin mensa-upb-api --release
 | 
						|
 | 
						|
FROM debian:bookworm-slim AS runtime
 | 
						|
 | 
						|
ARG UID=10001
 | 
						|
RUN adduser \
 | 
						|
    --disabled-password \
 | 
						|
    --gecos "" \
 | 
						|
    --home "/nonexistent" \
 | 
						|
    --shell "/sbin/nologin" \
 | 
						|
    --no-create-home \
 | 
						|
    --uid "${UID}" \
 | 
						|
    appuser
 | 
						|
USER appuser
 | 
						|
 | 
						|
COPY --from=builder /app/target/release/mensa-upb-api /bin/mensa-upb-api
 | 
						|
 | 
						|
ENV API_INTERFACE=0.0.0.0
 | 
						|
 | 
						|
EXPOSE 8080
 | 
						|
 | 
						|
# What the container should run when it is started.
 | 
						|
CMD ["/bin/mensa-upb-api"] |