- improve docker_entrypoint.sh - serve static files with puma by default - sort packages list - use virtual package for build deps - show how to assign UID/GIDmaster
@@ -95,3 +95,8 @@ SMTP_FROM_ADDRESS=notifications@example.com | |||||
# Cluster number setting for streaming API server. | # Cluster number setting for streaming API server. | ||||
# If you comment out following line, cluster number will be `numOfCpuCores - 1`. | # If you comment out following line, cluster number will be `numOfCpuCores - 1`. | ||||
STREAMING_CLUSTER_NUM=1 | STREAMING_CLUSTER_NUM=1 | ||||
# Docker mastodon user | |||||
# If you use Docker, you may want to assign UID/GID manually. | |||||
# UID=1000 | |||||
# GID=1000 |
@@ -4,6 +4,7 @@ LABEL maintainer="https://github.com/tootsuite/mastodon" \ | |||||
description="A GNU Social-compatible microblogging server" | description="A GNU Social-compatible microblogging server" | ||||
ENV UID=991 GID=991 \ | ENV UID=991 GID=991 \ | ||||
RAILS_SERVE_STATIC_FILES=true \ | |||||
RAILS_ENV=production NODE_ENV=production | RAILS_ENV=production NODE_ENV=production | ||||
EXPOSE 3000 4000 | EXPOSE 3000 4000 | ||||
@@ -11,28 +12,28 @@ EXPOSE 3000 4000 | |||||
WORKDIR /mastodon | WORKDIR /mastodon | ||||
RUN echo "@edge https://nl.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories \ | RUN echo "@edge https://nl.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories \ | ||||
&& BUILD_DEPS=" \ | |||||
postgresql-dev \ | |||||
&& apk -U upgrade \ | |||||
&& apk add -t build-dependencies \ | |||||
build-base \ | |||||
libxml2-dev \ | libxml2-dev \ | ||||
libxslt-dev \ | libxslt-dev \ | ||||
postgresql-dev \ | |||||
protobuf-dev \ | |||||
python \ | python \ | ||||
build-base \ | |||||
protobuf-dev" \ | |||||
&& apk -U upgrade && apk add \ | |||||
$BUILD_DEPS \ | |||||
nodejs@edge \ | |||||
nodejs-npm@edge \ | |||||
&& apk add \ | |||||
ca-certificates \ | |||||
ffmpeg \ | |||||
file \ | |||||
git \ | git \ | ||||
imagemagick@edge \ | |||||
libpq \ | libpq \ | ||||
libxml2 \ | libxml2 \ | ||||
libxslt \ | libxslt \ | ||||
ffmpeg \ | |||||
file \ | |||||
imagemagick@edge \ | |||||
ca-certificates \ | |||||
nodejs-npm@edge \ | |||||
nodejs@edge \ | |||||
protobuf \ | protobuf \ | ||||
tini \ | |||||
su-exec \ | su-exec \ | ||||
tini \ | |||||
&& npm install -g npm@3 && npm install -g yarn \ | && npm install -g npm@3 && npm install -g yarn \ | ||||
&& update-ca-certificates \ | && update-ca-certificates \ | ||||
&& rm -rf /tmp/* /var/cache/apk/* | && rm -rf /tmp/* /var/cache/apk/* | ||||
@@ -1,4 +1,14 @@ | |||||
#!/bin/sh | #!/bin/sh | ||||
### 1. Adds local user (UID and GID are provided from environment variables). | |||||
### 2. Updates permissions, except for ./public/system (should be chown on previous installations). | |||||
### 3. Executes the command as that user. | |||||
echo "Creating mastodon user (UID : ${UID} and GID : ${GID})..." | |||||
addgroup -g ${GID} mastodon && adduser -h /mastodon -s /bin/sh -D -G mastodon -u ${UID} mastodon | addgroup -g ${GID} mastodon && adduser -h /mastodon -s /bin/sh -D -G mastodon -u ${UID} mastodon | ||||
echo "Updating permissions..." | |||||
find /mastodon -path /mastodon/public/system -prune -o -not -user mastodon -not -group mastodon -print0 | xargs -0 chown -f mastodon:mastodon | find /mastodon -path /mastodon/public/system -prune -o -not -user mastodon -not -group mastodon -print0 | xargs -0 chown -f mastodon:mastodon | ||||
su-exec mastodon:mastodon /sbin/tini -- "$@" | |||||
echo "Executing process..." | |||||
exec su-exec mastodon:mastodon /sbin/tini -- "$@" |