might work now
This commit is contained in:
parent
c7b081f5b9
commit
72a9dc7d78
14
Dockerfile
14
Dockerfile
@ -11,6 +11,12 @@ ENV \
|
||||
NODE_ENV=production \
|
||||
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/mastodon/app/bin
|
||||
|
||||
ARG UID=991
|
||||
ARG GID=991
|
||||
|
||||
# mastodon v3.0.1
|
||||
ARG REPO_URL=https://github.com/tootsuite/mastodon.git
|
||||
ARG REPO_REV=c4118ba71ba31e408c02d289e111326ccc6f6aa2
|
||||
|
||||
# install os prereq stuff to image
|
||||
ADD prereqs.sh /tmp/prereqs.sh
|
||||
@ -25,7 +31,13 @@ RUN chpst -u mastodon:mastodon bash /tmp/install.sh
|
||||
|
||||
ADD ./rootfs /
|
||||
|
||||
RUN chmod +x /usr/local/bin/* /etc/service/*/run
|
||||
RUN chmod +x /etc/service/postfix/run
|
||||
RUN chmod +x /etc/service/redis/run
|
||||
RUN chmod +x /etc/service/postgres/run
|
||||
RUN chmod +x /etc/service/startup/run
|
||||
RUN chmod +x /etc/service/sidekiq/run
|
||||
RUN chmod +x /etc/service/web/run
|
||||
RUN chmod +x /etc/service/streaming/run
|
||||
|
||||
VOLUME /state
|
||||
|
||||
|
3
Makefile
3
Makefile
@ -6,4 +6,5 @@ build:
|
||||
docker build -t $(NAME) .
|
||||
|
||||
run:
|
||||
docker run -ti $(NAME)
|
||||
-docker rm -f mastodon
|
||||
docker run --env WEB_DOMAIN="test123.example.com" --hostname mastodon --name mastodon -ti $(NAME)
|
||||
|
@ -14,10 +14,9 @@ rbenv global 2.6.5
|
||||
gem update --system
|
||||
gem install bundler --no-document
|
||||
|
||||
git clone https://github.com/tootsuite/mastodon.git /mastodon/app
|
||||
git clone $REPO_URL /mastodon/app
|
||||
cd /mastodon/app
|
||||
# v3.0.1:
|
||||
git checkout c4118ba71ba31e408c02d289e111326ccc6f6aa2
|
||||
git checkout $REPO_REV
|
||||
|
||||
bundle config build.nokogiri --use-system-libraries
|
||||
bundle install \
|
||||
|
@ -50,16 +50,19 @@ apt install -y \
|
||||
libxml2-dev \
|
||||
libxslt1-dev \
|
||||
libyaml-dev \
|
||||
mailutils \
|
||||
nginx \
|
||||
nodejs \
|
||||
pkg-config \
|
||||
postfix \
|
||||
postgresql \
|
||||
postgresql-contrib \
|
||||
protobuf-compiler \
|
||||
redis-server \
|
||||
redis-tools \
|
||||
rsync \
|
||||
yarn \
|
||||
zlib1g-dev
|
||||
|
||||
addgroup --gid 991 mastodon
|
||||
useradd --uid 991 --gid 991 -m -d /mastodon mastodon
|
||||
addgroup --gid $GID mastodon
|
||||
useradd --uid $UID --gid $GID --shell /bin/bash -m -d /mastodon mastodon
|
||||
|
@ -1,5 +1,70 @@
|
||||
#!/bin/bash
|
||||
POSTFIX='/usr/sbin/postfix'
|
||||
MONITOR_INTERVAL=10 # seconds
|
||||
|
||||
exec 2>&1
|
||||
|
||||
if [[ ! -d /state/envdir ]]; then
|
||||
mkdir -p /state/envdir
|
||||
chown mastodon:mastodon /state/envdir
|
||||
fi
|
||||
|
||||
if [[ ! -e /state/envdir/WEB_DOMAIN ]]; then
|
||||
if [[ -n "$WEB_DOMAIN" ]]; then
|
||||
echo "$WEB_DOMAIN" > /state/envdir/WEB_DOMAIN
|
||||
else
|
||||
hostname --fqdn > /state/envdir/WEB_DOMAIN
|
||||
fi
|
||||
chown mastodon:mastodon /state/envdir/*
|
||||
fi
|
||||
|
||||
cat /etc/postfix/main.cf | grep -v '^myhostname' > /etc/postfix/main.new
|
||||
rm /etc/postfix/main.cf
|
||||
echo "myhostname = $(cat /state/envdir/WEB_DOMAIN)" >> /etc/postfix/main.cf
|
||||
echo "myorigin = $(cat /state/envdir/WEB_DOMAIN)" >> /etc/postfix/main.cf
|
||||
cat /etc/postfix/main.new >> /etc/postfix/main.cf
|
||||
rm /etc/postfix/main.new
|
||||
|
||||
running() {
|
||||
pkill -0 master
|
||||
}
|
||||
|
||||
start() {
|
||||
echo "postfix starting..."
|
||||
/etc/init.d/postfix start
|
||||
}
|
||||
|
||||
exec /usr/lib/postfix/master
|
||||
stop() {
|
||||
if running; then
|
||||
echo Stopping
|
||||
/etc/init.d/postfix stop
|
||||
fi
|
||||
}
|
||||
|
||||
reload() {
|
||||
echo Reloading
|
||||
/etc/init.d/postfix reload
|
||||
}
|
||||
|
||||
check() {
|
||||
echo Checking
|
||||
"$POSTFIX" check
|
||||
}
|
||||
|
||||
status() {
|
||||
"$POSTFIX" status
|
||||
}
|
||||
|
||||
|
||||
trap 'echo INT; stop; exit' INT
|
||||
trap 'echo QUIT; stop; exit' QUIT
|
||||
trap 'echo TERM; stop; exit' TERM
|
||||
trap 'echo STOP; stop' STOP
|
||||
trap 'echo HUP; reload' HUP
|
||||
trap 'echo USR1; check' USR1
|
||||
trap 'echo USR2; status' USR2
|
||||
|
||||
while :; do
|
||||
running || start
|
||||
sleep $MONITOR_INTERVAL
|
||||
done
|
||||
|
@ -2,7 +2,28 @@
|
||||
|
||||
echo "postgres starting..."
|
||||
|
||||
mkdir -p /state/db
|
||||
chown mastodon:mastodon /state/db
|
||||
exec chpst -u mastodon:mastodon /usr/lib/postgresql/bin/postmaster \
|
||||
-D /state/db 2>&1
|
||||
chown mastodon:mastodon /var/run/postgresql
|
||||
chown -R mastodon:mastodon /etc/postgresql
|
||||
|
||||
echo "local all all peer" > /etc/postgresql/10/main/pg_hba.conf
|
||||
echo "local all mastodon peer" >> /etc/postgresql/10/main/pg_hba.conf
|
||||
echo "local all root peer" >> /etc/postgresql/10/main/pg_hba.conf
|
||||
echo "host all all 127.0.0.0/8 trust" >> /etc/postgresql/10/main/pg_hba.conf
|
||||
|
||||
if [[ ! -d /state/db ]]; then
|
||||
mkdir -p /state/db/data
|
||||
rsync -a /var/lib/postgresql/10/main/ /state/db/data/
|
||||
cp -a /etc/postgresql/10/main/* /state/db/
|
||||
grep -v '^data_directory' /state/db/postgresql.conf |
|
||||
grep -v "^ssl" |
|
||||
grep -v "^stats_temp_directory" > /state/db/postgresql.new
|
||||
echo "data_directory = '/state/db/data'" >> /state/db/postgresql.new
|
||||
echo "stats_temp_directory = '/tmp'" >> /state/db/postgresql.new
|
||||
mv /state/db/postgresql.new /state/db/postgresql.conf
|
||||
chown -R mastodon:mastodon /state/db
|
||||
chmod go-rwx /state/db/data
|
||||
fi
|
||||
|
||||
exec \
|
||||
chpst -u mastodon:mastodon \
|
||||
/usr/lib/postgresql/10/bin/postmaster -D /state/db 2>&1
|
||||
|
@ -2,4 +2,11 @@
|
||||
|
||||
mkdir -p /state/redis
|
||||
chown mastodon:mastodon /state/redis
|
||||
exec chpst -u mastodon:mastodon /usr/bin/redis-server /etc/redis/redis.conf
|
||||
exec chpst -u mastodon:mastodon /usr/bin/redis-server - <<EOF
|
||||
daemonize no
|
||||
dir /state/redis
|
||||
save 900 1
|
||||
save 300 10
|
||||
save 60 10000
|
||||
EOF
|
||||
|
||||
|
@ -11,4 +11,4 @@ cd /mastodon/app
|
||||
exec \
|
||||
envdir /state/envdir \
|
||||
chpst -u mastodon:mastodon \
|
||||
bash -c "bundle exec sidekiq -c $SIDEKIQ_WORKERS -q default -q push -q pull -q mailers"
|
||||
bash -i -c "bundle exec sidekiq -c $SIDEKIQ_WORKERS -q default -q push -q pull -q mailers"
|
||||
|
@ -5,18 +5,43 @@ echo "mastodon-startup starting up..."
|
||||
|
||||
if [[ ! -d /state/envdir ]]; then
|
||||
mkdir -p /state/envdir
|
||||
chown mastodon:mastodon /state/envdir
|
||||
fi
|
||||
|
||||
if [[ ! -e /state/envdir/HOME ]]; then
|
||||
echo "/mastodon" > /state/envdir/HOME
|
||||
fi
|
||||
|
||||
if [[ ! -e /state/envdir/RAILS_ENV ]]; then
|
||||
echo "production" > /state/envdir/RAILS_ENV
|
||||
fi
|
||||
|
||||
chown mastodon:mastodon /state/envdir /state/envdir/*
|
||||
|
||||
cd /mastodon/app
|
||||
|
||||
if [ "$RUN_DB_MIGRATIONS" == "true" ]; then
|
||||
if [[ ! -e /state/envdir/OTP_SECRET ]]; then
|
||||
envdir /state/envdir \
|
||||
chpst -u mastodon:mastodon \
|
||||
bash -i -c "bundle exec rake secret > /state/envdir/OTP_SECRET"
|
||||
fi
|
||||
|
||||
if [[ ! -e /state/envdir/SECRET_KEY_BASE ]]; then
|
||||
envdir /state/envdir \
|
||||
chpst -u mastodon:mastodon \
|
||||
bash -i -c "bundle exec rake secret > /state/envdir/SECRET_KEY_BASE"
|
||||
fi
|
||||
|
||||
echo "
|
||||
create database mastodon_production;
|
||||
create user mastodon createdb;
|
||||
grant all privileges on database mastodon_production to mastodon;
|
||||
" | chpst -u postgres:postgres psql
|
||||
|
||||
if [[ -n "$RUN_DB_MIGRATIONS" ]]; then
|
||||
echo "Running database migrations..."
|
||||
envdir /state/envdir chpst -u mastodon:mastodon bash -c "bundle exec rake db:migrate"
|
||||
envdir /state/envdir \
|
||||
chpst -u mastodon:mastodon \
|
||||
bash -i -c "bundle exec rake db:migrate"
|
||||
fi
|
||||
|
||||
rm /state/.starting
|
||||
|
@ -8,4 +8,7 @@ done
|
||||
echo "streaming starting..."
|
||||
|
||||
cd /mastodon/app
|
||||
exec envdir /state/envdir chpst -u mastodon:mastodon bash -c "npm run start"
|
||||
exec \
|
||||
envdir /state/envdir \
|
||||
chpst -u mastodon:mastodon \
|
||||
bash -i -c "npm run start"
|
||||
|
@ -8,4 +8,7 @@ done
|
||||
echo "web starting..."
|
||||
|
||||
cd /mastodon/app
|
||||
exec envdir /state/envdir chpst -u mastodon:mastodon bash -c "bundle exec puma -C config/puma.rb"
|
||||
exec \
|
||||
envdir /state/envdir \
|
||||
chpst -u mastodon:mastodon \
|
||||
bash -i -c "bundle exec puma -C config/puma.rb"
|
||||
|
Loading…
Reference in New Issue
Block a user