59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
| # Get started with a build env with Rust nightly
 | ||
| FROM rustlang/rust:nightly-bullseye as base
 | ||
| 
 | ||
| # If you’re using stable, use this instead
 | ||
| # FROM rust:1.74-bullseye as builder
 | ||
| 
 | ||
| # Install cargo-binstall, which makes it easier to install other
 | ||
| # cargo extensions like cargo-leptos
 | ||
| RUN wget https://github.com/cargo-bins/cargo-binstall/releases/latest/download/cargo-binstall-x86_64-unknown-linux-musl.tgz
 | ||
| RUN tar -xvf cargo-binstall-x86_64-unknown-linux-musl.tgz
 | ||
| RUN cp cargo-binstall /usr/local/cargo/bin
 | ||
| 
 | ||
| # Install cargo-leptos
 | ||
| RUN cargo binstall cargo-leptos -y
 | ||
| 
 | ||
| # Add the WASM target
 | ||
| RUN rustup target add wasm32-unknown-unknown
 | ||
| 
 | ||
| # Make an /app dir, which everything will eventually live in
 | ||
| RUN mkdir -p /app
 | ||
| WORKDIR /app
 | ||
| 
 | ||
| FROM base as builder
 | ||
| # Build the app
 | ||
| COPY . .
 | ||
| RUN cargo leptos build --release -vv
 | ||
| 
 | ||
| FROM debian:bookworm-slim as runtime
 | ||
| WORKDIR /app
 | ||
| RUN apt-get update -y \
 | ||
|   && apt-get install -y --no-install-recommends openssl ca-certificates \
 | ||
|   && apt-get autoremove -y \
 | ||
|   && apt-get clean -y \
 | ||
|   && rm -rf /var/lib/apt/lists/*
 | ||
| 
 | ||
| # -- NB: update binary name from "leptos_start" to match your app name in Cargo.toml --
 | ||
| # Copy the server binary to the /app directory
 | ||
| COPY --from=builder /app/target/release/sreez /app/
 | ||
| 
 | ||
| # /target/site contains our JS/WASM/CSS, etc.
 | ||
| COPY --from=builder /app/target/site /app/site
 | ||
| 
 | ||
| # Copy Cargo.toml if it’s needed at runtime
 | ||
| COPY --from=builder /app/Cargo.toml /app/
 | ||
| 
 | ||
| # Copy config.toml to configure discord endpoint
 | ||
| COPY --from=builder /app/config.toml /app/
 | ||
| 
 | ||
| # Set any required env variables and
 | ||
| ENV RUST_LOG="info"
 | ||
| ENV LEPTOS_SITE_ADDR="0.0.0.0:8080"
 | ||
| ENV LEPTOS_SITE_ROOT="site"
 | ||
| EXPOSE 8080
 | ||
| 
 | ||
| # -- NB: update binary name from "leptos_start" to match your app name in Cargo.toml --
 | ||
| # Run the server
 | ||
| CMD ["/app/sreez"]
 | ||
| 
 |