From 05923765b1d6083acbc09d9395dff799955737d4 Mon Sep 17 00:00:00 2001 From: Joep Meindertsma Date: Mon, 13 Mar 2023 22:04:05 +0100 Subject: [PATCH 1/8] musl docker #618 --- .dockerignore | 2 +- .github/workflows/docker.yml | 2 ++ dockerfile | 14 +++++++++----- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.dockerignore b/.dockerignore index af4888c78..ab1a59b1c 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,5 @@ target -Dockerfile +dockerfile .dockerignore .env .git diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 6dfa7f0a6..c9083bed9 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -41,6 +41,8 @@ jobs: images: joepmeneer/atomic-server github-token: ${{ secrets.GITHUB_TOKEN }} tags: | + # set latest tag for master branch + type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'master') }} type=schedule type=ref,event=branch type=ref,event=pr diff --git a/dockerfile b/dockerfile index 04b09db1b..ef1a223e4 100644 --- a/dockerfile +++ b/dockerfile @@ -1,11 +1,15 @@ -FROM rust:1.67 as builder +FROM rust:1.67 AS builder +# Install musl dependencies +RUN rustup target add x86_64-unknown-linux-musl +RUN apt update && apt install -y musl-tools musl-dev WORKDIR /app COPY . . -RUN cargo build --release --bin atomic-server --config net.git-fetch-with-cli=true +RUN cargo build --release --bin atomic-server --config net.git-fetch-with-cli=true --target x86_64-unknown-linux-musl +RUN strip -s /app/target/x86_64-unknown-linux-musl/release/atomic-server + +FROM scratch as runtime +COPY --from=builder /app/target/x86_64-unknown-linux-musl/release/atomic-server /atomic-server-bin -# We only need a small runtime for this step, but make sure glibc is installed -FROM frolvlad/alpine-glibc:alpine-3.16_glibc-2.34 as runtime -COPY --chmod=0755 --from=builder /app/target/release/atomic-server /atomic-server-bin # For a complete list of possible ENV vars or available flags, run with `--help` ENV ATOMIC_STORE_PATH="/atomic-storage/db" ENV ATOMIC_CONFIG_PATH="/atomic-storage/config.toml" From efdd6916bb510f17baa9609363be315d88088fb5 Mon Sep 17 00:00:00 2001 From: Joep Meindertsma Date: Mon, 13 Mar 2023 22:42:35 +0100 Subject: [PATCH 2/8] linker fix --- dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dockerfile b/dockerfile index ef1a223e4..efcb31410 100644 --- a/dockerfile +++ b/dockerfile @@ -2,6 +2,8 @@ FROM rust:1.67 AS builder # Install musl dependencies RUN rustup target add x86_64-unknown-linux-musl RUN apt update && apt install -y musl-tools musl-dev +# set correct linker +ENV RUSTFLAGS='-C linker=x86_64-linux-gnu-gcc' WORKDIR /app COPY . . RUN cargo build --release --bin atomic-server --config net.git-fetch-with-cli=true --target x86_64-unknown-linux-musl From cf607d33e41f801d5ee0a60da61f12f4a2a93f36 Mon Sep 17 00:00:00 2001 From: Joep Meindertsma Date: Mon, 13 Mar 2023 23:06:26 +0100 Subject: [PATCH 3/8] More musl deps --- dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockerfile b/dockerfile index efcb31410..2fb1d0ee6 100644 --- a/dockerfile +++ b/dockerfile @@ -1,7 +1,7 @@ FROM rust:1.67 AS builder # Install musl dependencies RUN rustup target add x86_64-unknown-linux-musl -RUN apt update && apt install -y musl-tools musl-dev +RUN apt update && apt install -y musl-tools musl-dev linux-musl-dev # set correct linker ENV RUSTFLAGS='-C linker=x86_64-linux-gnu-gcc' WORKDIR /app From 8b067aaf1367acb1a9fdea1960e8fab22e5f9243 Mon Sep 17 00:00:00 2001 From: Joep Meindertsma Date: Mon, 13 Mar 2023 23:17:58 +0100 Subject: [PATCH 4/8] try more envs --- .github/workflows/docker.yml | 10 ++++++++++ dockerfile | 10 ++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index c9083bed9..e2eea0beb 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -60,3 +60,13 @@ jobs: platforms: linux/amd64,linux/arm64 tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} + + - name: Run docker image + run: nohup docker run -p 80:80 joepmeneer/atomic-server:develop --initialize & + + - name: Setup and run end-to-end tests + working-directory: ./server/e2e_tests/ + run: | + pnpm install + pnpm run install-playwright + pnpm run test diff --git a/dockerfile b/dockerfile index 2fb1d0ee6..afb80fb3d 100644 --- a/dockerfile +++ b/dockerfile @@ -1,9 +1,15 @@ FROM rust:1.67 AS builder # Install musl dependencies RUN rustup target add x86_64-unknown-linux-musl -RUN apt update && apt install -y musl-tools musl-dev linux-musl-dev -# set correct linker + +# Cross-compiling for musl requires some specific linkers due to ring +# https://github.com/briansmith/ring/issues/1414#issuecomment-1055177218 +RUN apt update && apt install install musl-tools clang llvm -y ENV RUSTFLAGS='-C linker=x86_64-linux-gnu-gcc' +ENV CC_aarch64_unknown_linux_musl=clang +ENV AR_aarch64_unknown_linux_musl=llvm-ar +ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-Clink-self-contained=yes -Clinker=rust-lld" + WORKDIR /app COPY . . RUN cargo build --release --bin atomic-server --config net.git-fetch-with-cli=true --target x86_64-unknown-linux-musl From 4a5f19e0cbdbfffa377676d6e98259a65ae6c3ef Mon Sep 17 00:00:00 2001 From: Joep Meindertsma Date: Mon, 13 Mar 2023 23:22:24 +0100 Subject: [PATCH 5/8] single install --- dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockerfile b/dockerfile index afb80fb3d..c5327687d 100644 --- a/dockerfile +++ b/dockerfile @@ -4,7 +4,7 @@ RUN rustup target add x86_64-unknown-linux-musl # Cross-compiling for musl requires some specific linkers due to ring # https://github.com/briansmith/ring/issues/1414#issuecomment-1055177218 -RUN apt update && apt install install musl-tools clang llvm -y +RUN apt update && apt install musl-tools clang llvm -y ENV RUSTFLAGS='-C linker=x86_64-linux-gnu-gcc' ENV CC_aarch64_unknown_linux_musl=clang ENV AR_aarch64_unknown_linux_musl=llvm-ar From 9c078648a5fb240c9bb3e9ce40c61ad49c3d9779 Mon Sep 17 00:00:00 2001 From: Joep Meindertsma Date: Mon, 13 Mar 2023 23:49:00 +0100 Subject: [PATCH 6/8] Update dockerfile --- dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/dockerfile b/dockerfile index c5327687d..2d2fe69cc 100644 --- a/dockerfile +++ b/dockerfile @@ -5,7 +5,6 @@ RUN rustup target add x86_64-unknown-linux-musl # Cross-compiling for musl requires some specific linkers due to ring # https://github.com/briansmith/ring/issues/1414#issuecomment-1055177218 RUN apt update && apt install musl-tools clang llvm -y -ENV RUSTFLAGS='-C linker=x86_64-linux-gnu-gcc' ENV CC_aarch64_unknown_linux_musl=clang ENV AR_aarch64_unknown_linux_musl=llvm-ar ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-Clink-self-contained=yes -Clinker=rust-lld" From 9ba78066f01a83c26954a53528fe7ee69d90d2c6 Mon Sep 17 00:00:00 2001 From: Joep Meindertsma Date: Tue, 14 Mar 2023 09:27:32 +0100 Subject: [PATCH 7/8] Add musl dev --- dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dockerfile b/dockerfile index 2d2fe69cc..5cd4d0a69 100644 --- a/dockerfile +++ b/dockerfile @@ -4,7 +4,8 @@ RUN rustup target add x86_64-unknown-linux-musl # Cross-compiling for musl requires some specific linkers due to ring # https://github.com/briansmith/ring/issues/1414#issuecomment-1055177218 -RUN apt update && apt install musl-tools clang llvm -y +RUN apt update && apt install -y musl-tools clang llvm musl-dev +ENV RUSTFLAGS='-C linker=x86_64-linux-gnu-gcc' ENV CC_aarch64_unknown_linux_musl=clang ENV AR_aarch64_unknown_linux_musl=llvm-ar ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-Clink-self-contained=yes -Clinker=rust-lld" From 216f175cf89c02072cfa3507ab44ac6a201bb7c1 Mon Sep 17 00:00:00 2001 From: Joep Meindertsma Date: Tue, 14 Mar 2023 09:49:05 +0100 Subject: [PATCH 8/8] Try clux/muslrust image --- dockerfile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/dockerfile b/dockerfile index 5cd4d0a69..a75985c14 100644 --- a/dockerfile +++ b/dockerfile @@ -1,14 +1,14 @@ -FROM rust:1.67 AS builder +FROM clux/muslrust:stable AS builder # Install musl dependencies -RUN rustup target add x86_64-unknown-linux-musl +# RUN rustup target add x86_64-unknown-linux-musl # Cross-compiling for musl requires some specific linkers due to ring # https://github.com/briansmith/ring/issues/1414#issuecomment-1055177218 -RUN apt update && apt install -y musl-tools clang llvm musl-dev -ENV RUSTFLAGS='-C linker=x86_64-linux-gnu-gcc' -ENV CC_aarch64_unknown_linux_musl=clang -ENV AR_aarch64_unknown_linux_musl=llvm-ar -ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-Clink-self-contained=yes -Clinker=rust-lld" +# RUN apt update && apt install -y musl-tools clang llvm musl-dev +# ENV RUSTFLAGS='-C linker=x86_64-linux-gnu-gcc' +# ENV CC_aarch64_unknown_linux_musl=clang +# ENV AR_aarch64_unknown_linux_musl=llvm-ar +# ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-Clink-self-contained=yes -Clinker=rust-lld" WORKDIR /app COPY . .