mastodon-app/Dockerfile

55 lines
2.2 KiB
Docker
Raw Normal View History

2021-02-23 17:28:41 +00:00
FROM cloudron/base:3.0.0@sha256:455c70428723e3a823198c57472785437eb6eab082e79b3ff04ea584faf46e92
2018-10-30 15:46:13 +00:00
2020-01-06 19:21:25 +00:00
RUN mkdir -p /app/code /app/pkg
2018-10-30 15:46:13 +00:00
WORKDIR /app/code
2020-12-28 19:43:54 +00:00
ARG VERSION=3.3.0
2019-12-12 22:11:35 +00:00
2020-05-15 17:52:43 +00:00
RUN apt-get update && \
apt install -y imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core \
g++ libprotobuf-dev protobuf-compiler pkg-config nodejs gcc autoconf \
bison build-essential libssl-dev libyaml-dev libreadline6-dev \
zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev \
nginx redis-server redis-tools postgresql postgresql-contrib \
2021-02-23 17:28:41 +00:00
libidn11-dev libicu-dev libjemalloc-dev && \
rm -rf /var/cache/apt /var/lib/apt/lists
2018-10-30 15:46:13 +00:00
2020-02-09 15:43:01 +00:00
RUN gem install --no-document bundler
2018-10-30 15:46:13 +00:00
ENV RAILS_ENV production
ENV NODE_ENV production
RUN curl -L https://github.com/tootsuite/mastodon/archive/v${VERSION}.tar.gz | tar -xz --strip-components 1 -f - && \
2020-02-09 15:43:01 +00:00
bundle config set deployment 'true' && \
bundle install --without test development && \
yarn install --pure-lockfile
2018-10-30 15:46:13 +00:00
# secret keys are not built into assets, so precompiling is safe to do here
# (these variables are required by rake though)
RUN SECRET_KEY_BASE=insecure.secret_key_base OTP_SECRET=insecure.otp_secret \
bundle exec rake assets:precompile
2020-12-21 18:12:52 +00:00
# https://github.com/rubygems/bundler/issues/5245 means that bundle exec writes to Gemfile.lock
RUN ln -fs /run/mastodon/bullet.log /app/code/log/bullet.log && \
rm -rf /app/code/tmp && ln -fs /tmp/mastodon /app/code/tmp && \
mv /app/code/Gemfile.lock /app/code/Gemfile.lock.original && ln -s /run/mastodon/Gemfile.lock /app/code/Gemfile.lock
# add nginx config
2020-12-21 18:12:52 +00:00
RUN rm /etc/nginx/sites-enabled/* && \
ln -sf /dev/stdout /var/log/nginx/access.log && \
ln -sf /dev/stderr /var/log/nginx/error.log
ADD nginx_readonlyrootfs.conf /etc/nginx/conf.d/readonlyrootfs.conf
COPY nginx/mastodon.conf /etc/nginx/sites-available/mastodon
RUN ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon
# add supervisor configs
ADD supervisor/* /etc/supervisor/conf.d/
RUN ln -sf /run/mastodon/supervisord.log /var/log/supervisor/supervisord.log
RUN ln -fs /app/data/env.production /app/code/.env.production
2018-10-30 15:46:13 +00:00
RUN ln -fs /app/data/system /app/code/public/system
2020-08-16 08:30:44 +00:00
COPY start.sh cleanup.sh env.template /app/pkg/
2018-10-31 12:53:10 +00:00
2020-01-06 19:21:25 +00:00
CMD [ "/app/pkg/start.sh" ]
2018-10-30 15:46:13 +00:00