Skip to content

Instantly share code, notes, and snippets.

@unarist
Created October 13, 2017 05:32
Show Gist options
  • Save unarist/eef2ea05b6b3c71aede0405dee4f35f0 to your computer and use it in GitHub Desktop.
Save unarist/eef2ea05b6b3c71aede0405dee4f35f0 to your computer and use it in GitHub Desktop.
devdondocker
version: '3'
volumes:
node_modules:
gems:
yarn:
services:
db:
restart: on-failure:1
ports:
- "5433:5432"
redis:
restart: on-failure:1
web:
build:
context: .
dockerfile: Dockerfile.dev
restart: on-failure:1
# environment:
# RAILS_ENV: production
volumes:
- ./app:/mastodon/app
# - ./bin:/mastodon/bin
- ./config:/mastodon/config
- ./db:/mastodon/db
- ./lib:/mastodon/lib
- ./spec:/mastodon/spec
- ./coverage:/mastodon/coverage
- ./public:/mastodon/public
# - ./babelrc:/mastodon/.babelrc
# - ./config.ru:/mastodon/config.ru
# install -> rebuild, update -> run
- ./Gemfile:/mastodon/Gemfile
- ./Gemfile.lock:/mastodon/Gemfile.lock
- ./package.json:/mastodon/package.json
- ./yarn.lock:/mastodon/yarn.lock
- gems:/usr/local/bundle
- yarn:/usr/local/yarn # customized in Dockerfile
- node_modules:/mastodon/node_modules
tmpfs:
- /mastodon/tmp
streaming:
build:
context: .
dockerfile: Dockerfile.dev
restart: on-failure:1
volumes:
- ./package.json:/mastodon/package.json
- node_modules:/mastodon/node_modules
- ./streaming:/mastodon/streaming
sidekiq:
build:
context: .
dockerfile: Dockerfile.dev
restart: "no"
volumes:
- ./app:/mastodon/app
- ./config:/mastodon/config
- ./lib:/mastodon/lib
- ./Gemfile:/mastodon/Gemfile
- ./Gemfile.lock:/mastodon/Gemfile.lock
- gems:/usr/local/bundle
tmpfs:
- /mastodon/tmp
FROM ruby:2.4.1-alpine
LABEL maintainer="https://github.com/tootsuite/mastodon" \
description="A GNU Social-compatible microblogging server"
ENV UID=991 GID=991 \
RAILS_SERVE_STATIC_FILES=true \
RAILS_ENV=production NODE_ENV=production
ARG LIBICONV_VERSION=1.15
ARG LIBICONV_DOWNLOAD_SHA256=ccf536620a45458d26ba83887a983b96827001e92a13847b45e4925cc8913178
EXPOSE 3000 4000
WORKDIR /mastodon
RUN echo "@edge https://nl.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories \
&& echo "@edge https://nl.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories \
&& apk -U upgrade \
&& apk add -t build-dependencies \
build-base \
icu-dev \
libidn-dev \
libtool \
postgresql-dev \
protobuf-dev \
python \
&& apk add \
ca-certificates \
ffmpeg \
file \
git \
icu-libs \
imagemagick@edge \
libidn \
libpq \
nodejs-npm@edge \
nodejs@edge \
protobuf \
su-exec \
tini \
yarn@edge \
&& update-ca-certificates \
&& wget -O libiconv.tar.gz "http://ftp.gnu.org/pub/gnu/libiconv/libiconv-$LIBICONV_VERSION.tar.gz" \
&& echo "$LIBICONV_DOWNLOAD_SHA256 *libiconv.tar.gz" | sha256sum -c - \
&& mkdir -p /tmp/src \
&& tar -xzf libiconv.tar.gz -C /tmp/src \
&& rm libiconv.tar.gz \
&& cd /tmp/src/libiconv-$LIBICONV_VERSION \
&& ./configure --prefix=/usr/local \
&& make -j$(getconf _NPROCESSORS_ONLN)\
&& make install \
&& libtool --finish /usr/local/lib \
&& cd /mastodon \
&& rm -rf /tmp/* /var/cache/apk/*
# --- modification from here ---
ENV RAILS_ENV=development NODE_ENV=development
COPY self.crt /usr/local/share/ca-certificates/self.crt
RUN bundle config build.nokogiri --with-iconv-lib=/usr/local/lib --with-iconv-include=/usr/local/include \
&& yarn config set ignore-optional true \
&& yarn config set cache-folder /usr/local/yarn \
&& bundle config without production \
&& update-ca-certificates
#COPY Gemfile Gemfile.lock package.json yarn.lock /mastodon/
#RUN bundle install --without production \
# && yarn --ignore-optional --pure-lockfile
# COPY docker_entrypoint.sh /usr/local/bin/run
# RUN chmod +x /usr/local/bin/run
# ENTRYPOINT ["/usr/local/bin/run"]
COPY . /mastodon
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment