Skip to content

Instantly share code, notes, and snippets.

@karasugawasu
Last active November 22, 2022 07:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save karasugawasu/3b087f82ad56d99535310918fb3cb12c to your computer and use it in GitHub Desktop.
Save karasugawasu/3b087f82ad56d99535310918fb3cb12c to your computer and use it in GitHub Desktop.
Akkoma OTPリリース用のDocker

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

  • DBの15432はモロヘイヤ用なので不要であれば外す
  • Dockerfileはrootlessモードで試してます
  • nginxはDockerじゃないよ

つかう

ぜんぶもってくる。

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

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

POSTGRES_USER
POSTGRES_PASSWORD
POSTGRES_DB

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

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

起動
./akkoma.sh start

停止
./akkoma.sh stop

または

docker-compose down

アプデ
そのうちかく

参考リポジトリ

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

#!/bin/bash
CMD=$1
OPTION=${@:2:($#-1)}
shopt -s expand_aliases
alias docker-compose='docker compose'
cd "$(dirname "$0")"
usage() {
cat <<USAGE
Usage: $0 [command]
setup - Dockerイメージのビルド, コンフィグファイルの作成, データベースの初期化
build - Dockerイメージのビルドをします
configure - コンフィグファイルを作成します
initialize - データベースの初期化
start - start akkoma
stop - stop akkoma
ctl - pleroma_ctlを実行します、後ろに実行したいオプションを続けてください ex)ctl emoji ls-packs など
USAGE
}
build() {
echo
echo Building images
docker-compose build
}
mk_akkoma_config() {
echo
echo Generating akkoma config
echo "DBのホスト名は postgres にしてください"
echo "DBのパスワードは事前に設定したものを使用してください"
echo "akkomaのlisten address は 0.0.0.0 にしてください"
echo
mkdir -p data/akkoma/config/
mkdir -p data/akkoma/content/uploads/
mkdir -p data/akkoma/content/static/emoji/
touch data/akkoma/config/config.exs
akkoma_CFG_CMD='/opt/akkoma/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 --entrypoint /bin/sh --rm web $akkoma_CFG_CMD
}
mk_config() {
mk_akkoma_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 postgres psql -U akkoma -f /tmp/config/setup_db.psql
docker-compose run --rm --entrypoint='/opt/akkoma/bin/pleroma_ctl migrate' web
docker-compose stop postgres
docker-compose rm --force postgres
}
install_frontend() {
echo
echo Installing Default frontend
docker-compose exec -it web /opt/akkoma/bin/pleroma_ctl frontend install pleroma-fe --ref stable
docker-compose exec -it web /opt/akkoma/bin/pleroma_ctl frontend install fedibird-fe--ref akkoma
docker-compose exec -it web /opt/akkoma/bin/pleroma_ctl frontend install admin-fe
}
start() {
docker-compose up -d
docker-compose ps
}
stop() {
docker-compose stop
}
pleroma_ctl() {
if [ -z "$*" ];then
echo "No options specified"
else
docker-compose exec -it web /opt/akkoma/bin/pleroma_ctl $*
fi
}
if [ -z "$CMD" ]; then
usage
exit 1
fi
case "$CMD" in
setup)
build
mk_config
init_db
start
install_frontend
;;
build)
build
;;
configure)
mk_config
;;
akkoma-config)
mk_akkoma_config
;;
initialize)
init_db
;;
start)
start
;;
stop)
stop
;;
ctl)
pleroma_ctl $OPTION
;;
*)
usage
exit 1
;;
esac
version: "2.3"
services:
postgres:
volumes:
- ./data/akkoma/config:/tmp/config:ro
web:
volumes:
- ./data/akkoma/config:/tmp/config
version: '2.3'
services:
postgres:
image: postgres:12.5-alpine
restart: always
environment:
POSTGRES_USER: akkoma
POSTGRES_PASSWORD: REPLACE_YOUR_PASSWORD
POSTGRES_DB: akkoma
volumes:
- ./data/postgres:/var/lib/postgresql/data
ports:
- '127.0.0.1:15432:5432'
web:
build: .
image: akkoma
restart: always
ports:
- '127.0.0.1:4000:4000'
volumes:
- ./data/akkoma/content/uploads:/var/lib/akkoma/uploads
- ./data/akkoma/content/static:/var/lib/akkoma/static
- ./data/akkoma/config:/etc/akkoma:ro
depends_on:
- postgres
FROM alpine:latest AS builder
ARG AKKOMA_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://akkoma-updates.s3-website.fr-par.scw.cloud/$AKKOMA_VER/akkoma-$FLAVOUR.zip -o /tmp/akkoma.zip \
&& unzip /tmp/akkoma.zip -d /tmp/ \
&& rm /tmp/akkoma.zip
FROM alpine:latest
ENV MIX_ENV=prod
RUN apk -U upgrade \
&& apk add --no-cache \
ncurses \
file-dev \
imagemagick \
ffmpeg \
exiftool \
unzip
COPY --from=builder /tmp/release/ /opt/akkoma
RUN mkdir --parents /var/lib/akkoma /etc/akkoma /var/lib/akkoma/uploads /var/lib/akkoma/static
VOLUME ["/var/lib/akkoma/uploads", "/var/lib/akkoma/static", "/etc/akkoma"]
ENTRYPOINT ["/opt/akkoma/bin/pleroma", "start"]
EXPOSE 4000/tcp
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment