From dd55fd65a56ad052584c5574ee5e1e7b16ff8a48 Mon Sep 17 00:00:00 2001 From: Ricard Illa Date: Tue, 23 Feb 2021 19:28:50 +0100 Subject: [PATCH] pleroma --- Makefile | 5 +++- README.md | 1 + pleroma/Dockerfile | 59 +++++++++++++++++++++++++++++++++++++++++++ pleroma/Makefile | 10 ++++++++ pleroma/entrypoint.sh | 18 +++++++++++++ 5 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 pleroma/Dockerfile create mode 100644 pleroma/Makefile create mode 100644 pleroma/entrypoint.sh diff --git a/Makefile b/Makefile index fcc7a91..352e474 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -images=agate archivebox ansible backup buku ddclient git-daemon gitolite gitolite-pystagit rss-bridge sassc syncthing tasks tor vdirsyncer xandikos +images=agate archivebox ansible backup buku ddclient git-daemon gitolite gitolite-pystagit rss-bridge pleroma sassc syncthing tasks tor vdirsyncer xandikos .PHONY: all $(images) all: $(images) @@ -34,6 +34,9 @@ gitolite-pystagit: rss-bridge: $(BUILD) +pleroma: + $(BUILD) + sassc: $(BUILD) diff --git a/README.md b/README.md index 2955f9a..a0107fa 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@ useful. * gitolite-pystagit: well, gitolite + pystagit * gitolite: gitolite + docker, so that I can mount the docker socket inside of it and have it do useful things through docker in response to triggers +* pleroma * sassc * syncthing * tasks: intended to run a cron daemon to run arbitrary periodic tasks. I mount diff --git a/pleroma/Dockerfile b/pleroma/Dockerfile new file mode 100644 index 0000000..a5cefde --- /dev/null +++ b/pleroma/Dockerfile @@ -0,0 +1,59 @@ +FROM elixir:1.11.3-alpine as build + +ENV MIX_ENV=prod + +RUN apk add \ + git \ + gcc \ + g++ \ + musl-dev \ + make \ + cmake \ + file-dev && \ + git clone \ + -b develop \ + https://git.pleroma.social/pleroma/pleroma.git \ + /pleroma && \ + echo "import Mix.Config" > /pleroma/config/prod.secret.exs && \ + cd /pleroma && \ + mix local.hex --force && \ + mix local.rebar --force && \ + mix deps.get --only prod && \ + mkdir -p /pleroma/release && \ + mix release --path release + +FROM alpine:3.13 + +RUN apk add --update --no-cache \ + exiftool \ + imagemagick \ + libmagic \ + ncurses \ + postgresql-client && \ + addgroup \ + --gid 10001 \ + pleroma && \ + adduser \ + --system \ + --shell /bin/false \ + --home /opt/pleroma \ + --uid 10000 \ + --ingroup pleroma \ + pleroma && \ + mkdir -p /var/lib/pleroma/uploads && \ + mkdir -p /var/lib/pleroma/static && \ + chown -R pleroma /var/lib/pleroma && \ + mkdir -p /etc/pleroma && \ + chown -R pleroma /etc/pleroma + +ENV PATH=/opt/pleroma/bin:$PATH + +COPY entrypoint.sh /usr/local/bin/entrypoint +RUN chmod +x /usr/local/bin/entrypoint + +USER pleroma + +COPY --from=build --chown=pleroma:0 /pleroma/release /opt/pleroma + +ENTRYPOINT ["/usr/local/bin/entrypoint"] +CMD ["/opt/pleroma/bin/pleroma", "start"] diff --git a/pleroma/Makefile b/pleroma/Makefile new file mode 100644 index 0000000..e91e236 --- /dev/null +++ b/pleroma/Makefile @@ -0,0 +1,10 @@ +USERNAME = rilla +IMG_NAME = pleroma + +.PHONY: build build-nc + +build: Dockerfile entrypoint.sh + docker build -t $(USERNAME)/$(IMG_NAME) . + +build-nc: Dockerfile entrypoint.sh + docker build --no-cache -t $(USERNAME)/$(IMG_NAME) . diff --git a/pleroma/entrypoint.sh b/pleroma/entrypoint.sh new file mode 100644 index 0000000..34f0641 --- /dev/null +++ b/pleroma/entrypoint.sh @@ -0,0 +1,18 @@ +#!/bin/ash + +set -e + +DB_USER="${DB_USER:-pleroma}" +DB_HOST="${DB_HOST:-db}" +DB_NAME="${DB_NAME:-pleroma}" + +echo "-- Waiting for database..." +while ! pg_isready -U "${DB_USER}" -d "postgres://${DB_HOST}:5432/${DB_NAME}" -t 1; do + sleep 1s +done + +echo "-- Running migrations..." +/opt/pleroma/bin/pleroma_ctl migrate + +echo "-- Starting!" +exec "$@"