37 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
# vim: filetype=dockerfile
 | 
						|
# Our entire toolchain runs in alpine
 | 
						|
FROM alpine:latest AS builder
 | 
						|
 | 
						|
ENV PATH "$PATH:/app/.cargo/bin"
 | 
						|
# Needed for proper compiling of openssl-dev
 | 
						|
ENV RUSTFLAGS "-C target-feature=-crt-static"
 | 
						|
 | 
						|
# Add the build user
 | 
						|
# Install dependencies
 | 
						|
RUN addgroup -S builder && \
 | 
						|
    adduser -S builder -G builder -h /app && \
 | 
						|
    apk update && \
 | 
						|
    apk add --no-cache \
 | 
						|
        curl \
 | 
						|
        gcc \
 | 
						|
        libgcc \
 | 
						|
        musl-dev \
 | 
						|
        openssl-dev \
 | 
						|
        postgresql-dev
 | 
						|
 | 
						|
# Switch to the non-root user
 | 
						|
USER builder
 | 
						|
 | 
						|
WORKDIR /app
 | 
						|
 | 
						|
# Install rustup in the new user's home
 | 
						|
# Create mountpoints for volumes with correct permissions
 | 
						|
RUN { curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly; } && \
 | 
						|
    rustup target add x86_64-unknown-linux-musl --toolchain nightly && \
 | 
						|
    mkdir -p .cargo/registry target
 | 
						|
 | 
						|
# Copy source code over to builder
 | 
						|
COPY --chown=builder:builder Cargo.toml Cargo.lock ./
 | 
						|
COPY --chown=builder:builder src/ ./src/
 | 
						|
COPY --chown=builder:builder migrations/ ./migrations/
 |