From c75cab3b7fdfa06b953c09fcf289b7ff913114ad Mon Sep 17 00:00:00 2001 From: asonix Date: Sun, 11 Feb 2024 14:54:33 -0600 Subject: [PATCH] Add forgejo dockerfile --- docker/drone/Dockerfile | 15 ------ docker/drone/manifest.tmpl | 25 ---------- docker/forgejo/Dockerfile | 24 ++++++++++ docker/prod/Dockerfile | 49 ------------------- docker/prod/build-image.sh | 37 --------------- docker/prod/deploy.sh | 87 ---------------------------------- docker/prod/docker-compose.yml | 2 +- docker/prod/manifest.sh | 43 ----------------- 8 files changed, 25 insertions(+), 257 deletions(-) delete mode 100644 docker/drone/Dockerfile delete mode 100644 docker/drone/manifest.tmpl create mode 100644 docker/forgejo/Dockerfile delete mode 100644 docker/prod/Dockerfile delete mode 100755 docker/prod/build-image.sh delete mode 100755 docker/prod/deploy.sh delete mode 100755 docker/prod/manifest.sh diff --git a/docker/drone/Dockerfile b/docker/drone/Dockerfile deleted file mode 100644 index 661d44b..0000000 --- a/docker/drone/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -ARG REPO_ARCH - -FROM asonix/rust-runner:latest-linux-$REPO_ARCH - -USER root -RUN \ - chown -R app:app /mnt - -COPY pict-rs-aggregator /usr/local/bin/pict-rs-aggregator - -USER app -EXPOSE 8080 -VOLUME /mnt -ENTRYPOINT ["/sbin/tini", "--"] -CMD ["/usr/local/bin/pict-rs-aggregator", "-d", "/mnt"] diff --git a/docker/drone/manifest.tmpl b/docker/drone/manifest.tmpl deleted file mode 100644 index db6fae2..0000000 --- a/docker/drone/manifest.tmpl +++ /dev/null @@ -1,25 +0,0 @@ -image: asonix/pictrs-aggregator:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}} -{{#if build.tags}} -tags: -{{#each build.tags}} - - {{this}} -{{/each}} -{{/if}} -manifests: - - - image: asonix/pictrs-aggregator:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64 - platform: - architecture: amd64 - os: linux - - - image: asonix/pictrs-aggregator:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64v8 - platform: - architecture: arm64 - os: linux - variant: v8 - - - image: asonix/pictrs-aggregator:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm32v7 - platform: - architecture: arm - os: linux - variant: v7 diff --git a/docker/forgejo/Dockerfile b/docker/forgejo/Dockerfile new file mode 100644 index 0000000..b8acae3 --- /dev/null +++ b/docker/forgejo/Dockerfile @@ -0,0 +1,24 @@ +FROM alpine:3.19 + +ARG UID=991 +ARG GID=991 + +ENV \ + UID=${UID} \ + GID=${GID} + +USER root +RUN \ + addgroup -g "${GID}" app && \ + adduser -D -G app -u "${UID}" -g "" -h /opt/app app && \ + apk add tini && \ + chown -R app:app /mnt + +COPY pict-rs-aggregator /usr/local/bin/pict-rs-aggregator + +USER app +EXPOSE 6669 +EXPOSE 8080 +VOLUME /mnt +ENTRYPOINT ["/sbin/tini", "--"] +CMD ["/usr/local/bin/pict-rs-aggregator"] diff --git a/docker/prod/Dockerfile b/docker/prod/Dockerfile deleted file mode 100644 index 437850f..0000000 --- a/docker/prod/Dockerfile +++ /dev/null @@ -1,49 +0,0 @@ -ARG REPO_ARCH=amd64 - -# cross-build environment -FROM asonix/rust-builder:$REPO_ARCH-latest AS builder - -ARG TAG=main -ARG BINARY=pict-rs-aggregator -ARG PROJECT=pict-rs-aggregator -ARG GIT_REPOSITORY=https://git.asonix.dog/asonix/$PROJECT - -ENV \ - BINARY=${BINARY} - -ADD \ - --chown=build:build \ - $GIT_REPOSITORY/archive/$TAG.tar.gz \ - /opt/build/repo.tar.gz - -RUN \ - tar zxf repo.tar.gz - -WORKDIR /opt/build/$PROJECT - -RUN \ - build - -# production environment -FROM asonix/rust-runner:$REPO_ARCH-latest - -ARG BINARY=pict-rs-aggregator - -ENV \ - BINARY=${BINARY} - -USER root - -COPY \ - --from=builder \ - /opt/build/binary \ - /usr/bin/${BINARY} - -RUN \ - chown -R app:app /mnt - -VOLUME /mnt -USER app -EXPOSE 8082 -ENTRYPOINT ["/sbin/tini", "--"] -CMD /usr/bin/${BINARY} -d /mnt diff --git a/docker/prod/build-image.sh b/docker/prod/build-image.sh deleted file mode 100755 index 2782f1e..0000000 --- a/docker/prod/build-image.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env bash - -function require() { - if [ "$1" = "" ]; then - echo "input '$2' required" - print_help - exit 1 - fi -} - -function print_help() { - echo "deploy.sh" - echo "" - echo "Usage:" - echo " deploy.sh [repo] [tag] [arch]" - echo "" - echo "Args:" - echo " repo: The docker repository to publish the image" - echo " tag: The tag applied to the docker image" - echo " arch: The architecuture of the doker image" -} - -REPO=$1 -TAG=$2 -ARCH=$3 - -require "$REPO" repo -require "$TAG" tag -require "$ARCH" arch - -sudo docker build \ - --pull \ - --build-arg TAG=$TAG \ - --build-arg REPO_ARCH=$ARCH \ - -t $REPO:$ARCH-$TAG \ - -f Dockerfile \ - . diff --git a/docker/prod/deploy.sh b/docker/prod/deploy.sh deleted file mode 100755 index 1573bcb..0000000 --- a/docker/prod/deploy.sh +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/env bash - -function require() { - if [ "$1" = "" ]; then - echo "input '$2' required" - print_help - exit 1 - fi -} - -function print_help() { - echo "deploy.sh" - echo "" - echo "Usage:" - echo " deploy.sh [tag] [branch] [push]" - echo "" - echo "Args:" - echo " tag: The git tag to be applied to the repository and docker build" - echo " branch: The git branch to use for tagging and publishing" - echo " push: Whether or not to push the image" - echo "" - echo "Examples:" - echo " ./deploy.sh v0.3.0-alpha.13 main true" - echo " ./deploy.sh v0.3.0-alpha.13-shell-out asonix/shell-out false" -} - -function build_image() { - tag=$1 - arch=$2 - push=$3 - - ./build-image.sh asonix/pictrs-aggregator $tag $arch - - sudo docker tag asonix/pictrs-aggregator:$arch-$tag asonix/pictrs-aggregator:$arch-latest - - if [ "$push" == "true" ]; then - sudo docker push asonix/pictrs-aggregator:$arch-$tag - sudo docker push asonix/pictrs-aggregator:$arch-latest - fi -} - -# Creating the new tag -new_tag="$1" -branch="$2" -push=$3 - -require "$new_tag" "tag" -require "$branch" "branch" -require "$push" "push" - -if ! sudo docker run --rm -it arm64v8/alpine:3.11 /bin/sh -c 'echo "docker is configured correctly"' -then - echo "docker is not configured to run on qemu-emulated architectures, fixing will require sudo" - sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes -fi - -set -xe - -git checkout $branch - -# Changing the docker-compose prod -sed -i "s/asonix\/pictrs-aggregator:.*/asonix\/pictrs-aggregator:$new_tag/" docker-compose.yml -git add ../prod/docker-compose.yml -# The commit -git commit -m"Version $new_tag" -git tag $new_tag - -# Push -git push origin $new_tag -git push - -# Build for arm64v8, arm32v7 and amd64 -build_image $new_tag arm64v8 $push -build_image $new_tag arm32v7 $push -build_image $new_tag amd64 $push - -# Build for other archs -# TODO - -if [ "$push" == "true" ]; then - ./manifest.sh pictrs-aggregator $new_tag - ./manifest.sh pictrs-aggregator latest - - pushd ../../ - cargo publish - popd -fi diff --git a/docker/prod/docker-compose.yml b/docker/prod/docker-compose.yml index 032aede..6f6d1e3 100644 --- a/docker/prod/docker-compose.yml +++ b/docker/prod/docker-compose.yml @@ -8,7 +8,7 @@ services: - ./volumes/pictrs:/mnt pictrs-aggregator: - image: asonix/pictrs-aggregator:v0.2.0-beta.1 + image: asonix/pictrs-aggregator:0.3 ports: - "8082:8082" restart: always diff --git a/docker/prod/manifest.sh b/docker/prod/manifest.sh deleted file mode 100755 index d426a97..0000000 --- a/docker/prod/manifest.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env bash - -function require() { - if [ "$1" = "" ]; then - echo "input '$2' required" - print_help - exit 1 - fi -} -function print_help() { - echo "deploy.sh" - echo "" - echo "Usage:" - echo " manifest.sh [repo] [tag]" - echo "" - echo "Args:" - echo " repo: The docker repository to update" - echo " tag: The git tag to be applied to the image manifest" -} - -REPO=$1 -TAG=$2 - -require "$REPO" "repo" -require "$TAG" "tag" - -set -xe - -sudo docker manifest create asonix/$REPO:$TAG \ - -a asonix/$REPO:arm64v8-$TAG \ - -a asonix/$REPO:arm32v7-$TAG \ - -a asonix/$REPO:amd64-$TAG - -sudo docker manifest annotate asonix/$REPO:$TAG \ - asonix/$REPO:arm64v8-$TAG --os linux --arch arm64 --variant v8 - -sudo docker manifest annotate asonix/$REPO:$TAG \ - asonix/$REPO:arm32v7-$TAG --os linux --arch arm --variant v7 - -sudo docker manifest annotate asonix/$REPO:$TAG \ - asonix/$REPO:amd64-$TAG --os linux --arch amd64 - -sudo docker manifest push asonix/$REPO:$TAG --purge