From 7bde512998b4438760152d8484d6d9ef52daff2c Mon Sep 17 00:00:00 2001 From: Max Date: Thu, 30 Jan 2025 18:37:55 -0500 Subject: [PATCH] feat: local development working --- .DS_Store | Bin 0 -> 6148 bytes .gitignore | 3 +- Taskfile.yml | 2 + compose.dev.yml | 64 ++++++++++++++++++ gitea/Dockerfile | 5 ++ gitea/Dockerfile.dev | 8 +++ {image/custom/conf => gitea/config}/app.ini | 0 .../custom/conf => gitea/config}/dev.app.ini | 0 .../public/assets/img/apple-touch-icon.png | Bin .../custom/public/assets/img/favicon.png | Bin .../custom/public/assets/img/favicon.svg | 0 .../custom/public/assets/img/logo.png | Bin .../custom/public/assets/img/logo.svg | 0 .../custom/templates/base/head.tmpl | 0 {image => gitea}/custom/templates/home.tmpl | 0 image/Dockerfile | 15 ---- image/Dockerfile.dev | 18 ----- image/crontab.txt | 1 - image/entrypoint.sh | 12 ---- image/scripts/pull.sh | 10 --- image/scripts/push.sh | 23 ------- terraform/install.sh | 7 +- 22 files changed, 87 insertions(+), 81 deletions(-) create mode 100644 .DS_Store create mode 100644 compose.dev.yml create mode 100644 gitea/Dockerfile create mode 100644 gitea/Dockerfile.dev rename {image/custom/conf => gitea/config}/app.ini (100%) rename {image/custom/conf => gitea/config}/dev.app.ini (100%) rename {image => gitea}/custom/public/assets/img/apple-touch-icon.png (100%) rename {image => gitea}/custom/public/assets/img/favicon.png (100%) rename {image => gitea}/custom/public/assets/img/favicon.svg (100%) rename {image => gitea}/custom/public/assets/img/logo.png (100%) rename {image => gitea}/custom/public/assets/img/logo.svg (100%) rename {image => gitea}/custom/templates/base/head.tmpl (100%) rename {image => gitea}/custom/templates/home.tmpl (100%) delete mode 100644 image/Dockerfile delete mode 100644 image/Dockerfile.dev delete mode 100644 image/crontab.txt delete mode 100755 image/entrypoint.sh delete mode 100644 image/scripts/pull.sh delete mode 100644 image/scripts/push.sh diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5e16864c90237cb5f4a20705fcc72a185c0886e2 GIT binary patch literal 6148 zcmeHKziSjh6#nL1$;DWt6tP&4*eL{TECOpdD=mZ+!4zWdhf%z9kGnId)mCa52p0N3 z1SM_i2tovZ{RLXv3O3^RW(M!g?cUjm$UK<&cHet5@4IhzXKnzP)d%fmU=cu_O)xpZ zuEHcPtzhBQxQkKn{hHdoj`i|JquI@y z^wsy0vn!uoyty34+cV?+J8Er6WWB+0*4;)2_pz-jpFX3&1Jbpg@c+vBim`8J&o~8M?^_P0sr$9wELoO@3 zrtH%)_=_cm`5L7Y~m4`R3yhe3_~6ZgX%2JXJ`H9C9g}x zd|I2?nIXSa_|0KRZCV(xA5C(rJuGKvUa!tQd-}n>Hxu({PSdkOKKA{cCyNf*45-;{ z>NP-5>$UW4v`0=AS(?}RgLhw!9IwjE@pGJ=srfDaC|LN9#ywlCzThzSQGuvHRN%J) zvOc72f|gsn5$i77pET z7+ab1_{zqgP>iike`?cVGKaB`3Pc4$1&+DfMcMzaOh5mJgW_FOAS&=*DPWSuT4R+z z$?vVDA18Zl%65xQO!5kcb_hGa9oq}pichgwV=R>mV&<`MNDnRk5wJ4EE-LU>75D`r CNB5)v literal 0 HcmV?d00001 diff --git a/.gitignore b/.gitignore index 40f0583..65bb421 100644 --- a/.gitignore +++ b/.gitignore @@ -38,4 +38,5 @@ override.tf.json terraform.rc *secret* -.vscode \ No newline at end of file +.vscode +.env \ No newline at end of file diff --git a/Taskfile.yml b/Taskfile.yml index 9bd658e..e7d730d 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -3,6 +3,8 @@ env: { TF: terraform -chdir=terraform } silent: true tasks: + dev: docker compose -f compose.dev.yml up --build --force-recreate --no-deps + tf/init: $TF init -backend-config=backend.tfvars tf/plan: $TF plan -var-file=secret.tfvars tf/destroy: $TF destroy diff --git a/compose.dev.yml b/compose.dev.yml new file mode 100644 index 0000000..ecf01d1 --- /dev/null +++ b/compose.dev.yml @@ -0,0 +1,64 @@ +name: web-git +services: + # Gitea itself. + gitea: + container_name: web-git-instance + depends_on: + - backup + build: + context: gitea + dockerfile: Dockerfile.dev + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - data:/var/lib/gitea + ports: + - 80:80 + - 443:443 + - 2222:2222 + labels: + - docker-volume-backup.stop-during-backup=true + + # The back-up service. + backup: + container_name: web-git-backup + image: offen/docker-volume-backup:v2 + depends_on: + - bucket-script + volumes: + - data:/backup/my-app-backup:ro + - /var/run/docker.sock:/var/run/docker.sock:ro + environment: + AWS_ENDPOINT: localstack:4566 + AWS_S3_BUCKET_NAME: test + AWS_ACCESS_KEY_ID: _ + AWS_SECRET_ACCESS_KEY: _ + BACKUP_CRON_EXPRESSION: "* * * * *" + AWS_ENDPOINT_INSECURE: true + + # The S3 container. + localstack: + container_name: web-git-s3 + image: localstack/localstack:s3-latest + ports: + - "4566:4566" + environment: + DEBUG: 1 + volumes: + - /var/run/docker.sock:/var/run/docker.sock + + # Just to make sure that the bucket is generated is the S3 container. + bucket-script: + container_name: web-git-s3-script + image: amazon/aws-cli + depends_on: + - localstack + entrypoint: /bin/sh -c + environment: + AWS_ACCESS_KEY_ID: _ + AWS_SECRET_ACCESS_KEY: _ + AWS_ENDPOINT_URL: http://localstack:4566 + command: '"aws s3api create-bucket --bucket test"' + +volumes: + data: diff --git a/gitea/Dockerfile b/gitea/Dockerfile new file mode 100644 index 0000000..cba7a78 --- /dev/null +++ b/gitea/Dockerfile @@ -0,0 +1,5 @@ +FROM gitea/gitea:latest-rootless + +ADD --chown=git:git config /etc/gitea +ADD --chown=git:git custom /etc/gitea-custom +ENV GITEA_CUSTOM /etc/gitea-custom diff --git a/gitea/Dockerfile.dev b/gitea/Dockerfile.dev new file mode 100644 index 0000000..10072c9 --- /dev/null +++ b/gitea/Dockerfile.dev @@ -0,0 +1,8 @@ +FROM gitea/gitea:latest-rootless + +ADD --chown=git:git config /etc/gitea +ADD --chown=git:git custom /etc/gitea-custom +ENV GITEA_CUSTOM /etc/gitea-custom + +RUN rm /etc/gitea/app.ini +RUN mv /etc/gitea/dev.app.ini /etc/gitea/app.ini diff --git a/image/custom/conf/app.ini b/gitea/config/app.ini similarity index 100% rename from image/custom/conf/app.ini rename to gitea/config/app.ini diff --git a/image/custom/conf/dev.app.ini b/gitea/config/dev.app.ini similarity index 100% rename from image/custom/conf/dev.app.ini rename to gitea/config/dev.app.ini diff --git a/image/custom/public/assets/img/apple-touch-icon.png b/gitea/custom/public/assets/img/apple-touch-icon.png similarity index 100% rename from image/custom/public/assets/img/apple-touch-icon.png rename to gitea/custom/public/assets/img/apple-touch-icon.png diff --git a/image/custom/public/assets/img/favicon.png b/gitea/custom/public/assets/img/favicon.png similarity index 100% rename from image/custom/public/assets/img/favicon.png rename to gitea/custom/public/assets/img/favicon.png diff --git a/image/custom/public/assets/img/favicon.svg b/gitea/custom/public/assets/img/favicon.svg similarity index 100% rename from image/custom/public/assets/img/favicon.svg rename to gitea/custom/public/assets/img/favicon.svg diff --git a/image/custom/public/assets/img/logo.png b/gitea/custom/public/assets/img/logo.png similarity index 100% rename from image/custom/public/assets/img/logo.png rename to gitea/custom/public/assets/img/logo.png diff --git a/image/custom/public/assets/img/logo.svg b/gitea/custom/public/assets/img/logo.svg similarity index 100% rename from image/custom/public/assets/img/logo.svg rename to gitea/custom/public/assets/img/logo.svg diff --git a/image/custom/templates/base/head.tmpl b/gitea/custom/templates/base/head.tmpl similarity index 100% rename from image/custom/templates/base/head.tmpl rename to gitea/custom/templates/base/head.tmpl diff --git a/image/custom/templates/home.tmpl b/gitea/custom/templates/home.tmpl similarity index 100% rename from image/custom/templates/home.tmpl rename to gitea/custom/templates/home.tmpl diff --git a/image/Dockerfile b/image/Dockerfile deleted file mode 100644 index d332842..0000000 --- a/image/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM gitea/gitea:latest - -RUN apk add aws-cli xz - -ADD --chown=git:git custom /data/gitea -ADD --chown=git:git entrypoint.sh /home/entrypoint.sh - -ADD --chown=git:git scripts /home/scripts -RUN chmod +x /home/scripts/* - -ADD --chown=git:git crontab.txt /home/crontab.txt -RUN /usr/bin/crontab /home/crontab.txt - -ENTRYPOINT [ "/home/entrypoint.sh" ] -CMD [ "/usr/bin/s6-svscan", "/etc/s6" ] \ No newline at end of file diff --git a/image/Dockerfile.dev b/image/Dockerfile.dev deleted file mode 100644 index a141218..0000000 --- a/image/Dockerfile.dev +++ /dev/null @@ -1,18 +0,0 @@ -FROM gitea/gitea:latest - -RUN apk add aws-cli xz - -ADD --chown=git:git custom /data/gitea -ADD --chown=git:git entrypoint.sh /home/entrypoint.sh - -ADD --chown=git:git scripts /home/scripts -RUN chmod +x /home/scripts/* - -ADD --chown=git:git crontab.txt /home/crontab.txt -RUN /usr/bin/crontab /home/crontab.txt - -RUN rm /data/gitea/conf/app.ini -RUN mv /data/gitea/conf/dev.app.ini /data/gitea/conf/app.ini - -ENTRYPOINT [ "/home/entrypoint.sh" ] -CMD [ "/usr/bin/s6-svscan", "/etc/s6" ] \ No newline at end of file diff --git a/image/crontab.txt b/image/crontab.txt deleted file mode 100644 index 04ff1ea..0000000 --- a/image/crontab.txt +++ /dev/null @@ -1 +0,0 @@ -0 0 * * * /home/scripts/push.sh >> /home/cron.log diff --git a/image/entrypoint.sh b/image/entrypoint.sh deleted file mode 100755 index 0188937..0000000 --- a/image/entrypoint.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -# Get S3 data. -echo "Pulling data..." -./home/scripts/pull.sh -echo "Data pulled!" - -# Run crontab. -/usr/sbin/crond -f -l 8 & - -# shellcheck disable=SC2068 -exec /usr/bin/entrypoint $@ \ No newline at end of file diff --git a/image/scripts/pull.sh b/image/scripts/pull.sh deleted file mode 100644 index 9cda4ef..0000000 --- a/image/scripts/pull.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -set -e - -# Pull achived data. -aws s3 cp "$BOOT_URI" /home/archive.tar.xz - -# Extracted Gitea data. -mkdir -p /var/lib/gitea -tar -xvf /home/archive.tar.xz -C /var/lib/gitea diff --git a/image/scripts/push.sh b/image/scripts/push.sh deleted file mode 100644 index 858b01e..0000000 --- a/image/scripts/push.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh - -set -e - -GITEA_PROCESS="$(pgrep gitea)" - -# Stop Gitea. -echo "Stopped Gitea..." -kill -STOP "$GITEA_PROCESS" - -# Archive Gitea data. -echo "Archiving..." -cd /var/lib/gitea -tar cfJ ../archive.tar.xz . -cd .. - -# Upload to S3. -echo "Uploading..." -aws s3 cp archive.tar.xz "$BOOT_URI" - -# Restart Gitea. -kill -CONT "$GITEA_PROCESS" -echo "Restarted Gitea!" diff --git a/terraform/install.sh b/terraform/install.sh index 19a3273..49dacad 100755 --- a/terraform/install.sh +++ b/terraform/install.sh @@ -20,4 +20,9 @@ mkswap /swapfile swapon /swapfile # Stop SSH (because we have SSM.) -sudo service sshd stop \ No newline at end of file +sudo service sshd stop + +# Install Docker Compose. +curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose +chmod +x /usr/local/bin/docker-compose +docker-compose version