77 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Docker
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Docker
		
	
	
		
			Executable File
		
	
	
	
	
| ####################################################################################################
 | |
| ## Builder
 | |
| ####################################################################################################
 | |
| FROM rust:latest AS builder
 | |
| 
 | |
| RUN rustup target add x86_64-unknown-linux-musl
 | |
| RUN apt update && apt install -y musl-tools musl-dev
 | |
| RUN update-ca-certificates
 | |
| 
 | |
| # Create appuser
 | |
| ENV USER=small-rust
 | |
| ENV UID=10001
 | |
| 
 | |
| RUN adduser \
 | |
|     --disabled-password \
 | |
|     --gecos "" \
 | |
|     --home "/nonexistent" \
 | |
|     --shell "/sbin/nologin" \
 | |
|     --no-create-home \
 | |
|     --uid "${UID}" \
 | |
|     "${USER}"
 | |
| 
 | |
| 
 | |
| WORKDIR /app
 | |
| 
 | |
| COPY ./ .
 | |
| 
 | |
| RUN cargo build --target x86_64-unknown-linux-musl --release
 | |
| 
 | |
| ####################################################################################################
 | |
| ## Final image
 | |
| ####################################################################################################
 | |
| FROM scratch
 | |
| 
 | |
| # Import from builder.
 | |
| COPY --from=builder /etc/passwd /etc/passwd
 | |
| COPY --from=builder /etc/group /etc/group
 | |
| 
 | |
| WORKDIR /app
 | |
| 
 | |
| # Copy our build
 | |
| COPY --from=builder /app/target/x86_64-unknown-linux-musl/release/small-rust ./
 | |
| 
 | |
| # Use an unprivileged user.
 | |
| USER small-rust:small-rust
 | |
| 
 | |
| CMD ["/app/small-rust"]
 | |
| 
 | |
| ####################################################################################################
 | |
| ## Alternatively use this builder (image size actually bigger)
 | |
| ####################################################################################################
 | |
| #FROM rust:1-alpine3.19 AS builder
 | |
| #
 | |
| #RUN rustup update nightly; rustup default nightly;
 | |
| #
 | |
| ## Create appuser
 | |
| #ENV USER=small-rust
 | |
| #ENV UID=10001
 | |
| #
 | |
| #RUN adduser \
 | |
| #    --disabled-password \
 | |
| #    --gecos "" \
 | |
| #    --home "/nonexistent" \
 | |
| #    --shell "/sbin/nologin" \
 | |
| #    --no-create-home \
 | |
| #    --uid "${UID}" \
 | |
| #    "${USER}"
 | |
| #
 | |
| #RUN apk add --no-cache musl-dev
 | |
| #
 | |
| #WORKDIR /app
 | |
| #
 | |
| #COPY ./ /app
 | |
| #
 | |
| #RUN cargo build --release
 | |
| #
 |