diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..9ee0597 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +.git +target +tmp \ No newline at end of file diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 60b80e4..28e6948 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -158,11 +158,12 @@ jobs: - name: Login to DockerHub uses: docker/login-action@v3 with: - username: ${{ secrets.DOCKERHUB_USERNAME }} + username: ${{ github.repository_owner }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v5 with: + file: Dockerfile-release build-args: | REPO=${{ github.repository }} VER=${{ github.ref_name }} diff --git a/Dockerfile b/Dockerfile index 8a4a0ff..5eaeb48 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,17 +1,12 @@ -FROM alpine as builder -ARG REPO VER TARGETPLATFORM -RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \ - TARGET="x86_64-unknown-linux-musl"; \ - elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then \ - TARGET="aarch64-unknown-linux-musl"; \ - elif [ "$TARGETPLATFORM" = "linux/386" ]; then \ - TARGET="i686-unknown-linux-musl"; \ - elif [ "$TARGETPLATFORM" = "linux/arm/v7" ]; then \ - TARGET="armv7-unknown-linux-musleabihf"; \ - fi && \ - wget https://github.com/${REPO}/releases/download/${VER}/proxyfor-${VER}-${TARGET}.tar.gz && \ - tar -xf proxyfor-${VER}-${TARGET}.tar.gz && \ - mv proxyfor /bin/ +FROM --platform=linux/amd64 messense/rust-musl-cross:x86_64-musl AS amd64 +COPY . . +RUN cargo install --path . --root / + +FROM --platform=linux/amd64 messense/rust-musl-cross:aarch64-musl AS arm64 +COPY . . +RUN cargo install --path . --root / + +FROM ${TARGETARCH} AS builder FROM scratch COPY --from=builder /bin/proxyfor /bin/proxyfor diff --git a/Dockerfile-release b/Dockerfile-release new file mode 100644 index 0000000..8a4a0ff --- /dev/null +++ b/Dockerfile-release @@ -0,0 +1,20 @@ +FROM alpine as builder +ARG REPO VER TARGETPLATFORM +RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \ + TARGET="x86_64-unknown-linux-musl"; \ + elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then \ + TARGET="aarch64-unknown-linux-musl"; \ + elif [ "$TARGETPLATFORM" = "linux/386" ]; then \ + TARGET="i686-unknown-linux-musl"; \ + elif [ "$TARGETPLATFORM" = "linux/arm/v7" ]; then \ + TARGET="armv7-unknown-linux-musleabihf"; \ + fi && \ + wget https://github.com/${REPO}/releases/download/${VER}/proxyfor-${VER}-${TARGET}.tar.gz && \ + tar -xf proxyfor-${VER}-${TARGET}.tar.gz && \ + mv proxyfor /bin/ + +FROM scratch +COPY --from=builder /bin/proxyfor /bin/proxyfor +VOLUME /.proxyfor +STOPSIGNAL SIGINT +ENTRYPOINT ["/bin/proxyfor"] \ No newline at end of file