From baa4b65f8f979c9a39f510d9336f82c92948439e Mon Sep 17 00:00:00 2001 From: "Jiaxiao (mossaka) Zhou" Date: Fri, 7 Mar 2025 23:27:46 +0000 Subject: [PATCH] Dockerfile: Refactor Dockerfiles to separate WASM target addition and build steps This is to optimize the build process and reduce the number of layers in the Docker images. Signed-off-by: Jiaxiao (mossaka) Zhou --- images/spin-keyvalue/Dockerfile | 3 ++- images/spin-mqtt-message-logger/Dockerfile | 3 ++- images/spin-multi-trigger-app/Dockerfile | 2 +- .../spin-multi-trigger-app/spin-redis-trigger/Dockerfile | 3 ++- images/spin-outbound-redis/Dockerfile | 3 ++- images/spin/Dockerfile | 9 ++++++--- images/spin_dotnet/Dockerfile | 7 ++++--- 7 files changed, 19 insertions(+), 11 deletions(-) diff --git a/images/spin-keyvalue/Dockerfile b/images/spin-keyvalue/Dockerfile index 781a3333..a5a26271 100644 --- a/images/spin-keyvalue/Dockerfile +++ b/images/spin-keyvalue/Dockerfile @@ -1,7 +1,8 @@ FROM --platform=${BUILDPLATFORM} rust:1.85 AS build WORKDIR /opt/build +RUN rustup target add wasm32-wasip1 COPY . . -RUN rustup target add wasm32-wasip1 && cargo build --target wasm32-wasip1 --release +RUN cargo build --target wasm32-wasip1 --release FROM scratch COPY --from=build /opt/build/spin.toml ./spin.toml diff --git a/images/spin-mqtt-message-logger/Dockerfile b/images/spin-mqtt-message-logger/Dockerfile index 18365bae..251c0e31 100644 --- a/images/spin-mqtt-message-logger/Dockerfile +++ b/images/spin-mqtt-message-logger/Dockerfile @@ -1,7 +1,8 @@ FROM --platform=${BUILDPLATFORM} rust:1.85 AS build WORKDIR /opt/build +RUN rustup target add wasm32-wasip1 COPY . . -RUN rustup target add wasm32-wasip1 && cargo build --target wasm32-wasip1 --release +RUN cargo build --target wasm32-wasip1 --release FROM scratch COPY --from=build /opt/build/target/wasm32-wasip1/release/mqtt_message_logger.wasm ./target/wasm32-wasip1/release/mqtt_message_logger.wasm diff --git a/images/spin-multi-trigger-app/Dockerfile b/images/spin-multi-trigger-app/Dockerfile index f1f46ce0..0f7beca8 100644 --- a/images/spin-multi-trigger-app/Dockerfile +++ b/images/spin-multi-trigger-app/Dockerfile @@ -1,7 +1,7 @@ FROM --platform=${BUILDPLATFORM} rust:1.85 AS build WORKDIR /opt/build -COPY . . RUN rustup target add wasm32-wasip1 +COPY . . WORKDIR /opt/build/spin-http-trigger RUN cargo build --target wasm32-wasip1 --release diff --git a/images/spin-multi-trigger-app/spin-redis-trigger/Dockerfile b/images/spin-multi-trigger-app/spin-redis-trigger/Dockerfile index c20f755f..9c885a6e 100644 --- a/images/spin-multi-trigger-app/spin-redis-trigger/Dockerfile +++ b/images/spin-multi-trigger-app/spin-redis-trigger/Dockerfile @@ -1,7 +1,8 @@ FROM --platform=${BUILDPLATFORM} rust:1.85 AS build WORKDIR /opt/build +RUN rustup target add wasm32-wasip1 COPY . . -RUN rustup target add wasm32-wasip1 && cargo build --target wasm32-wasip1 --release +RUN cargo build --target wasm32-wasip1 --release FROM scratch COPY --from=build /opt/build/target/wasm32-wasip1/release/spin_redis_trigger.wasm ./target/wasm32-wasip1/release/spin_redis_trigger.wasm diff --git a/images/spin-outbound-redis/Dockerfile b/images/spin-outbound-redis/Dockerfile index 238cdb1e..5bd4be53 100644 --- a/images/spin-outbound-redis/Dockerfile +++ b/images/spin-outbound-redis/Dockerfile @@ -1,7 +1,8 @@ FROM --platform=${BUILDPLATFORM} rust:1.85 AS build WORKDIR /opt/build +RUN rustup target add wasm32-wasip1 COPY . . -RUN rustup target add wasm32-wasip1 && cargo build --target wasm32-wasip1 --release +RUN cargo build --target wasm32-wasip1 --release FROM scratch COPY --from=build /opt/build/target/wasm32-wasip1/release/spin_outbound_redis.wasm ./target/wasm32-wasip1/release/spin_outbound_redis.wasm diff --git a/images/spin/Dockerfile b/images/spin/Dockerfile index fd2f6513..43a19ae0 100644 --- a/images/spin/Dockerfile +++ b/images/spin/Dockerfile @@ -1,13 +1,16 @@ FROM --platform=${BUILDPLATFORM} rust:1.85 AS build WORKDIR /opt/build +RUN rustup target add wasm32-wasip1 COPY . . -RUN rustup target add wasm32-wasip1 && cargo build --target wasm32-wasip1 --release +RUN cargo build --target wasm32-wasip1 --release FROM --platform=linux/amd64 golang:1.23.2-bullseye AS build-go WORKDIR /opt/build -COPY . . RUN curl -LO https://github.com/tinygo-org/tinygo/releases/download/v0.34.0/tinygo_0.34.0_amd64.deb && dpkg -i tinygo_0.34.0_amd64.deb -RUN cd go-hello && tinygo build -target=wasi -o spin_go_hello.wasm main.go +COPY . . +WORKDIR /opt/build/go-hello +RUN if [ -f go.mod ]; then go mod download; fi +RUN tinygo build -target=wasi -o spin_go_hello.wasm main.go FROM scratch COPY --from=build /opt/build/target/wasm32-wasip1/release/spin_rust_hello.wasm ./target/wasm32-wasip1/release/spin_rust_hello.wasm diff --git a/images/spin_dotnet/Dockerfile b/images/spin_dotnet/Dockerfile index 986b396d..550fca42 100644 --- a/images/spin_dotnet/Dockerfile +++ b/images/spin_dotnet/Dockerfile @@ -1,14 +1,15 @@ FROM --platform=${BUILDPLATFORM} mcr.microsoft.com/dotnet/sdk:7.0-bullseye-slim-amd64 AS build WORKDIR /opt/build -COPY . . RUN apt-get update && apt-get install xz-utils RUN curl -LO https://github.com/bytecodealliance/wizer/releases/download/dev/wizer-dev-x86_64-linux.tar.xz \ && tar -xvf wizer-dev-x86_64-linux.tar.xz \ && rm wizer-dev-x86_64-linux.tar.xz \ && install wizer-dev-x86_64-linux/wizer /usr/local/bin +FROM build AS build-dotnet +COPY . . RUN dotnet build -c Release FROM scratch -COPY --from=build /opt/build/bin/Release/net7.0/MyTestProject.wasm ./bin/Release/net7.0/MyTestProject.wasm -COPY --from=build /opt/build/spin.toml . \ No newline at end of file +COPY --from=build-dotnet /opt/build/bin/Release/net7.0/MyTestProject.wasm ./bin/Release/net7.0/MyTestProject.wasm +COPY --from=build-dotnet /opt/build/spin.toml . \ No newline at end of file