Working multi-stage container build
This commit is contained in:
parent
2b1e350ce1
commit
107bb05d47
3 changed files with 30 additions and 8 deletions
2
client/.containerignore
Normal file
2
client/.containerignore
Normal file
|
@ -0,0 +1,2 @@
|
|||
dist
|
||||
node_modules
|
7
justfile
7
justfile
|
@ -7,14 +7,15 @@ build-client:
|
|||
|
||||
# npm run build places the build in the server/public directory
|
||||
build-container: build-client
|
||||
cd server && podman build -t server .
|
||||
cd server && podman build -t fb-server .
|
||||
|
||||
start-release: build-container
|
||||
podman run -d -p 8080:8080 --name frostbyte server
|
||||
podman container rm -f frostbyte
|
||||
podman run -d -p 8080:8080 --name frostbyte fb-server
|
||||
|
||||
clean:
|
||||
podman container rm -f frostbyte
|
||||
podman image rm -f server
|
||||
podman image rm -f fb-server
|
||||
rm -rf client/dist
|
||||
rm -rf client/node_modules
|
||||
rm -rf server/public
|
||||
|
|
|
@ -1,7 +1,26 @@
|
|||
# The rust:latest-alpine uses musl libc
|
||||
FROM docker.io/rust:latest as builder
|
||||
workdir /app
|
||||
ADD . /app
|
||||
RUN cargo clean
|
||||
RUN cargo build --release
|
||||
WORKDIR /build
|
||||
ADD . /build
|
||||
RUN apt update
|
||||
RUN apt install musl musl-dev musl-tools -y
|
||||
RUN rustup target add x86_64-unknown-linux-musl
|
||||
RUN cargo build --target x86_64-unknown-linux-musl --release
|
||||
|
||||
FROM docker.io/alpine:latest as runner
|
||||
|
||||
# Add a non-root user for running the server
|
||||
RUN addgroup -S user && adduser -S user -G user
|
||||
|
||||
# Copy the server binary and the public directory
|
||||
WORKDIR /runner
|
||||
COPY --from=builder /build/target/x86_64-unknown-linux-musl/release/server /runner/server
|
||||
COPY --from=builder /build/public /runner/public
|
||||
|
||||
# Make sure the user can access the files
|
||||
RUN chown -R user:user /runner
|
||||
USER user
|
||||
|
||||
# Run the server
|
||||
EXPOSE 8080
|
||||
CMD ["cargo", "run", "--release"]
|
||||
CMD ["./server"]
|
||||
|
|
Loading…
Reference in a new issue