Skip to content

Instantly share code, notes, and snippets.

@karasugawasu
Last active April 1, 2021 08:39
Show Gist options
  • Save karasugawasu/7c195cb3b643fec3453b8411c520e9e8 to your computer and use it in GitHub Desktop.
Save karasugawasu/7c195cb3b643fec3453b8411c520e9e8 to your computer and use it in GitHub Desktop.
Pleroma OTP Docker

Pleroma OTPリリース用のDocker設定ファイル群

"鴉は安息を夢見る"用の構成。 DBの15432はモロヘイヤ用

よくわからないエラーが出ているような気がしなくもないけどとりあえず動いている。

1から作るのはマイグレまでしか試していないので、動いているか見ていない。 nginxはDockerじゃないよ。

つかう

ぜんぶもってくる。

つかえるように。
chmod +x pleroma.sh

docker-compose.ymlを編集する
必要に応じて以下を変える。

POSTGRES_USER
POSTGRES_PASSWORD
POSTGRES_DB

あとで使うので覚えておくこと。

初回セットアップ
./pleroma.sh setup 途中、dbのhostname効かれるので、postgresにする listen addressは0.0.0.0にする。 DBのユーザやらパスワードやらは先ほどの設定に合わせる。 (間違えるとマイグレで止まる)

間違えたら、/data消せばおk

起動
./pleroma.sh start

停止
./pleroma.sh stop

または

docker-compose down

アプデ
そのうちかく

参考リポジトリ

https://github.com/joshpj/pleroma-docker

version: "2.3"
services:
postgres:
volumes:
- ./data/pleroma/config:/tmp/config:ro
web:
volumes:
- ./data/pleroma/config:/tmp/config
version: '2.3'
services:
postgres:
image: postgres:12.5-alpine
#container_name: pleroma_postgres
restart: always
environment:
POSTGRES_USER: pleroma
POSTGRES_PASSWORD: PLZ_REPLACE_YOUR_DATABASE_PASSWORD
POSTGRES_DB: pleroma
volumes:
- ./data/postgres:/var/lib/postgresql/data
ports:
- '127.0.0.1:15432:5432'
web:
build: .
image: pleroma
#container_name: pleroma_web
restart: always
ports:
- '127.0.0.1:4000:4000'
volumes:
- ./data/pleroma/content/uploads:/var/lib/pleroma/uploads
- ./data/pleroma/content/static:/var/lib/pleroma/static
- ./data/pleroma/config:/etc/pleroma:ro
depends_on:
- postgres
FROM alpine:latest AS builder
ARG PLEROMA_VER=stable
ARG FLAVOUR=amd64-musl
#RUN export FLAVOUR=`arch="$(uname -m)";if [ "$arch" = "x86_64" ];then arch="amd64";elif [ "$arch" = "armv7l" ];then arch="arm";elif [ "$arch" = "aarch64" ];then arch="arm64";else echo "Unsupported arch: $arch">&2;fi;if getconf GNU_LIBC_VERSION>/dev/null;then libc_postfix="";elif [ "$(ldd 2>&1|head -c 9)" = "musl libc" ];then libc_postfix="-musl";elif [ "$(find /lib/libc.musl*|wc -l)" ];then libc_postfix="-musl";else echo "Unsupported libc">&2;fi;echo "$arch$libc_postfix"`
RUN apk add --no-cache \
curl \
unzip
RUN echo $FLAVOUR \
&& echo $PLEROMA_VER
RUN curl https://git.pleroma.social/api/v4/projects/2/jobs/artifacts/${PLEROMA_VER}/download?job=${FLAVOUR} -o /tmp/pleroma.zip \
&& unzip /tmp/pleroma.zip -d /tmp/ \
&& rm /tmp/pleroma.zip
FROM alpine:latest
ENV UID=911 GID=911 \
MIX_ENV=prod
RUN apk -U upgrade \
&& apk add --no-cache \
ncurses \
file-dev \
imagemagick \
ffmpeg \
exiftool \
unzip
RUN addgroup -g ${GID} pleroma \
&& adduser --system --shell /bin/false --home /opt/pleroma -D -G pleroma -u ${UID} pleroma
COPY --from=builder --chown=pleroma:root /tmp/release/ /opt/pleroma
RUN mkdir --parents /var/lib/pleroma /etc/pleroma \
&& chown -R pleroma /var/lib/pleroma /etc/pleroma
USER pleroma
VOLUME ["/var/lib/pleroma/uploads", "/var/lib/pleroma/static", "/etc/pleroma"]
ENTRYPOINT ["/opt/pleroma/bin/pleroma", "start"]
EXPOSE 4000/tcp
#!/bin/sh
CMD=$1
cd "$(dirname "$0")"
usage() {
cat <<USAGE
Usage: $0 [command]
setup - build, configure, initialize
build - build images
configure - generate config files
initialize - initialize database
start - start Pleroma
stop - stop Pleroma
USAGE
}
build() {
echo
echo Building images
docker-compose build
}
mk_pleroma_config() {
echo
echo Generating Pleroma config
echo "DBのホスト名は postgres にしてください"
echo "DBのパスワードは事前に設定したものを使用してください"
echo "Pleromaのlisten address は 0.0.0.0 にしてください"
echo
mkdir -p data/pleroma/config/
mkdir -p data/pleroma/content/uploads/
mkdir -p data/pleroma/content/static/emoji/
sudo chown -R 911:911 data/pleroma/content/uploads/
sudo chown -R 911:911 data/pleroma/content/static/emoji/
touch data/pleroma/config/config.exs
PLEROMA_CFG_CMD='/opt/pleroma/bin/pleroma_ctl instance gen --force --output /tmp/config/config.exs --output-psql /tmp/config/setup_db.psql'
docker-compose -f docker-compose.yml -f docker-compose-init.yml run --no-deps --user root --entrypoint /bin/sh --rm web $PLEROMA_CFG_CMD
}
mk_config() {
mk_pleroma_config
}
init_db() {
echo
echo Initializing database
docker-compose -f docker-compose.yml -f docker-compose-init.yml up -d postgres
sleep 10
docker-compose exec --user postgres db psql -f /tmp/config/setup_db.psql
docker-compose run --rm --entrypoint='/opt/pleroma/bin/pleroma_ctl migrate' web
docker-compose stop postgres
docker-compose rm --force postgres
}
start() {
docker-compose up -d
docker-compose ps
}
stop() {
docker-compose stop
}
if [ -z "$CMD" ]; then
usage
exit 1
fi
case "$CMD" in
setup)
build
mk_config
init_db
;;
build)
build
;;
configure)
mk_config
;;
pleroma-config)
mk_pleroma_config
;;
initialize)
init_db
;;
start)
start
;;
stop)
stop
;;
*)
usage
exit 1
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment