diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2f7896d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +target/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c107b8f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +# THIS FILE IS AUTOMATICALLY GENERATED BY BUILD.SH +# TO MODIFY DOCKERFILES, SEE THE DIRECTORY NAMED "dockerfiles"\n + +# dockerfiles/00-base +FROM debian AS base +RUN apt update +RUN --mount=type=cache,target=/var/cache apt install -y build-essential libssl-dev zlib1g-dev autoconf + +# dockerfiles/02-final +FROM busybox:glibc + +COPY tini /tini +COPY utils/http-server-rs/target/release/http-server /bin +COPY --from=base /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib + +RUN mkdir -p /srv/repo + +EXPOSE 8000 + +CMD ["http-server", "--chdir", "/srv/repo"] +ENTRYPOINT ["/tini", "--"] diff --git a/README.md b/README.md index 18fd1e4..66e124d 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# mini-fdroid -smallest possible fdroid server container +# minhttpd +tiny http server, made to mimic* the usability of "python -m http.server" \ No newline at end of file diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..4c2bb1d --- /dev/null +++ b/build.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +set -e + +echo "# THIS FILE IS AUTOMATICALLY GENERATED BY BUILD.SH" >Dockerfile +echo "# TO MODIFY DOCKERFILES, SEE THE DIRECTORY NAMED \"dockerfiles\"\n" >>Dockerfile + +for f in dockerfiles/*; do + echo -e "\n# $f" >>Dockerfile + cat $f >>Dockerfile +done + +if ! command -v cargo 2 >&1 >/dev/null; then + echo "[*] Rust is not installed" + exit 0 +fi + +for f in utils/*; do + echo "Building $(basename $f)..." + + pushd $f + cargo build -r + popd +done + +CMD="" +if command -v podman 2 >&1 >/dev/null; then + echo "[*] Using podman" + CMD="podman" +elif command -v docker 2 >&1 >/dev/null; then + echo "[*] Using docker" + CMD="docker" +else + echo "[!] No CMD parser installed." + exit 1 +fi + +$CMD build . -t arson.pw/minhttpd diff --git a/dockerfiles/00-base b/dockerfiles/00-base new file mode 100644 index 0000000..f3ec580 --- /dev/null +++ b/dockerfiles/00-base @@ -0,0 +1,3 @@ +FROM debian AS base +RUN apt update +RUN --mount=type=cache,target=/var/cache apt install -y build-essential libssl-dev zlib1g-dev autoconf diff --git a/dockerfiles/01-server b/dockerfiles/01-server new file mode 100644 index 0000000..a3128e0 --- /dev/null +++ b/dockerfiles/01-server @@ -0,0 +1,12 @@ +FROM busybox:glibc + +COPY tini /tini +COPY utils/http-server-rs/target/release/http-server /bin +COPY --from=base /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib + +RUN mkdir -p /srv/repo + +EXPOSE 8000 + +CMD ["http-server", "--chdir", "/srv/repo"] +ENTRYPOINT ["/tini", "--"] diff --git a/tini b/tini new file mode 100755 index 0000000..86cb766 Binary files /dev/null and b/tini differ diff --git a/utils/http-server-rs b/utils/http-server-rs new file mode 160000 index 0000000..1a5cee4 --- /dev/null +++ b/utils/http-server-rs @@ -0,0 +1 @@ +Subproject commit 1a5cee437c8bc580251f563f7c216a787264da2e