diff --git a/.woodpecker.yml b/.woodpecker.yml index a472b7019..f4f3b5d7c 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -248,7 +248,7 @@ steps: settings: repo: dessalines/lemmy dockerfile: docker/Dockerfile - platforms: linux/amd64 + platforms: linux/amd64, linux/arm64 build_args: - RUST_RELEASE_MODE=release tag: ${CI_COMMIT_TAG} diff --git a/docker/Dockerfile b/docker/Dockerfile index 0a079ea24..1a101d5b7 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -4,7 +4,7 @@ ARG CARGO_BUILD_FEATURES=default ARG RUST_RELEASE_MODE=debug ARG AMD_BUILDER_IMAGE=rust:${RUST_VERSION} -ARG ARM_BUILDER_IMAGE="ghcr.io/raskyld/aarch64-lemmy-linux-gnu:v0.1.0" +ARG ARM_BUILDER_IMAGE="ghcr.io/raskyld/aarch64-lemmy-linux-gnu:v0.2.0" ARG AMD_RUNNER_IMAGE=debian:bookworm-slim ARG ARM_RUNNER_IMAGE=debian:bookworm-slim @@ -41,38 +41,38 @@ RUN --mount=type=cache,target=/lemmy/target set -ex; \ fi # ARM64 builder -# # NB(raskyld): this is a hack to be able to COPY --from= this image, because the variable doesn't +# NB(raskyld): this is a hack to be able to COPY --from= this image, because the variable doesn't # seem to be expended in --form arg of COPY :( -# FROM --platform=linux/amd64 ${ARM_BUILDER_IMAGE} AS build-arm64 +FROM --platform=linux/amd64 ${ARM_BUILDER_IMAGE} AS build-arm64 -# ARG RUST_RELEASE_MODE -# ARG CARGO_BUILD_FEATURES +ARG RUST_RELEASE_MODE +ARG CARGO_BUILD_FEATURES -# WORKDIR /home/lemmy/src -# USER 10001:10001 +WORKDIR /home/lemmy/src +USER 10001:10001 -# COPY --chown=lemmy:lemmy . ./ +COPY --chown=lemmy:lemmy . ./ -# ENV PATH="/home/lemmy/.cargo/bin:${PATH}" -# ENV RUST_RELEASE_MODE=${RUST_RELEASE_MODE} \ -# CARGO_BUILD_FEATURES=${CARGO_BUILD_FEATURES} +ENV PATH="/home/lemmy/.cargo/bin:${PATH}" +ENV RUST_RELEASE_MODE=${RUST_RELEASE_MODE} \ + CARGO_BUILD_FEATURES=${CARGO_BUILD_FEATURES} -# # Debug build -# RUN --mount=type=cache,target=./target,uid=10001,gid=10001 set -ex; \ -# if [ "${RUST_RELEASE_MODE}" = "debug" ]; then \ -# echo "pub const VERSION: &str = \"$(git describe --tag)\";" > crates/utils/src/version.rs; \ -# cargo build --features "${CARGO_BUILD_FEATURES}"; \ -# mv "./target/$CARGO_BUILD_TARGET/$RUST_RELEASE_MODE/lemmy_server" /home/lemmy/lemmy_server; \ -# fi +# Debug build +RUN --mount=type=cache,target=./target,uid=10001,gid=10001 set -ex; \ + if [ "${RUST_RELEASE_MODE}" = "debug" ]; then \ + echo "pub const VERSION: &str = \"$(git describe --tag)\";" > crates/utils/src/version.rs; \ + cargo build --features "${CARGO_BUILD_FEATURES}"; \ + mv "./target/$CARGO_BUILD_TARGET/$RUST_RELEASE_MODE/lemmy_server" /home/lemmy/lemmy_server; \ + fi -# # Release build -# RUN --mount=type=cache,target=./target,uid=10001,gid=10001 set -ex; \ -# if [ "${RUST_RELEASE_MODE}" = "release" ]; then \ -# echo "pub const VERSION: &str = \"$(git describe --tag)\";" > crates/utils/src/version.rs; \ -# [ -z "$USE_RELEASE_CACHE" ] && cargo clean --release; \ -# cargo build --features "${CARGO_BUILD_FEATURES}" --release; \ -# mv "./target/$CARGO_BUILD_TARGET/$RUST_RELEASE_MODE/lemmy_server" /home/lemmy/lemmy_server; \ -# fi +# Release build +RUN --mount=type=cache,target=./target,uid=10001,gid=10001 set -ex; \ + if [ "${RUST_RELEASE_MODE}" = "release" ]; then \ + echo "pub const VERSION: &str = \"$(git describe --tag)\";" > crates/utils/src/version.rs; \ + [ -z "$USE_RELEASE_CACHE" ] && cargo clean --release; \ + cargo build --features "${CARGO_BUILD_FEATURES}" --release; \ + mv "./target/$CARGO_BUILD_TARGET/$RUST_RELEASE_MODE/lemmy_server" /home/lemmy/lemmy_server; \ + fi # amd64 base runner FROM ${AMD_RUNNER_IMAGE} AS runner-linux-amd64 @@ -83,28 +83,28 @@ RUN apt update && apt install -y libssl-dev libpq-dev ca-certificates COPY --from=build-amd64 --chmod=0755 /lemmy/lemmy_server /usr/local/bin # arm base runner -# FROM ${ARM_RUNNER_IMAGE} AS runner-linux-arm64 +FROM ${ARM_RUNNER_IMAGE} AS runner-linux-arm64 -# RUN apt update && apt install -y ca-certificates libssl-dev libpq-dev +RUN apt update && apt install -y ca-certificates libssl-dev libpq-dev -# COPY --from=build-arm64 --chmod=0755 /home/lemmy/lemmy_server /usr/local/bin +COPY --from=build-arm64 --chmod=0755 /home/lemmy/lemmy_server /usr/local/bin -# # Final image that use a base runner based on the target OS and ARCH -# FROM runner-${TARGETOS}-${TARGETARCH} +# Final image that use a base runner based on the target OS and ARCH +FROM runner-${TARGETOS}-${TARGETARCH} -# LABEL org.opencontainers.image.authors="The Lemmy Authors" -# LABEL org.opencontainers.image.source="https://github.com/LemmyNet/lemmy" -# LABEL org.opencontainers.image.licenses="AGPL-3.0-or-later" -# LABEL org.opencontainers.image.description="A link aggregator and forum for the fediverse" +LABEL org.opencontainers.image.authors="The Lemmy Authors" +LABEL org.opencontainers.image.source="https://github.com/LemmyNet/lemmy" +LABEL org.opencontainers.image.licenses="AGPL-3.0-or-later" +LABEL org.opencontainers.image.description="A link aggregator and forum for the fediverse" -# ARG UNAME -# ARG GID -# ARG UID +ARG UNAME +ARG GID +ARG UID -# RUN groupadd -g ${GID} -o ${UNAME} && \ -# useradd -m -u ${UID} -g ${GID} -o -s /bin/bash ${UNAME} -# USER $UNAME +RUN groupadd -g ${GID} -o ${UNAME} && \ + useradd -m -u ${UID} -g ${GID} -o -s /bin/bash ${UNAME} +USER $UNAME -# ENTRYPOINT ["lemmy_server"] -# EXPOSE 8536 -# STOPSIGNAL SIGTERM +ENTRYPOINT ["lemmy_server"] +EXPOSE 8536 +STOPSIGNAL SIGTERM