commit: b17202ca0f19b83beb25afdba7e713a0f9329ffa
parent: 6fec8afc3f91166930c8b4dfca441a5a70a24d5b
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Mon, 14 Mar 2016 21:39:39 +0100
Adding a docker-compose template for running Mastodon easily
Diffstat:
7 files changed, 58 insertions(+), 2 deletions(-)
diff --git a/.dockerignore b/.dockerignore
@@ -0,0 +1 @@
+.env
diff --git a/.env.production.sample b/.env.production.sample
@@ -0,0 +1,5 @@
+REDIS_HOST=redis
+LOCAL_DOMAIN=example.com
+LOCAL_HTTPS=true
+PAPERCLIP_SECRET=
+SECRET_KEY_BASE=
diff --git a/.gitignore b/.gitignore
@@ -17,3 +17,5 @@
/tmp
coverage
public/system
+public/assets
+.env
diff --git a/Dockerfile b/Dockerfile
@@ -0,0 +1,15 @@
+FROM ruby:2.2.4
+
+ENV RAILS_ENV=production
+
+RUN apt-get update -qq && apt-get install -y build-essential libpq-dev
+RUN mkdir /mastodon
+
+WORKDIR /mastodon
+
+ADD Gemfile /mastodon/Gemfile
+ADD Gemfile.lock /mastodon/Gemfile.lock
+
+RUN bundle install --deployment --without test --without development
+
+ADD . /mastodon
diff --git a/README.md b/README.md
@@ -15,12 +15,12 @@ Mastodon is a federated microblogging engine. An alternative implementation of t
- Mentions and URLs converted to links in statuses
- REST API, including home and mention timelines
- OAuth2 provider system for the API
+- Upload header image for profile page
Missing:
- Media attachments (photos, videos)
- UI to post, reblog, favourite, follow and unfollow
-- Upload header image for profile page
- Deleting statuses, deletion propagation
- Streaming API
@@ -34,3 +34,17 @@ Missing:
- PostgreSQL
- Redis
+
+## Running with Docker and Docker-Compose
+
+The project now includes a Dockerfile and a docker-compose.yml. You need to turn .env.production sample into .env.production with all the variables set before you can:
+
+ docker-compose build
+
+And finally
+
+ docker-compose up
+
+As usual, the first thing you would need to do would be to run migrations:
+
+ docker-compose run web rake db:migrate
diff --git a/config/database.yml b/config/database.yml
@@ -2,6 +2,7 @@ default: &default
adapter: postgresql
pool: 5
timeout: 5000
+ encoding: unicode
development:
<<: *default
@@ -16,4 +17,7 @@ test:
production:
<<: *default
- database: mastodon_production
+ database: postgres
+ username: postgres
+ password:
+ host: db
diff --git a/docker-compose.yml b/docker-compose.yml
@@ -0,0 +1,15 @@
+version: '2'
+services:
+ db:
+ image: postgres
+ redis:
+ image: redis
+ web:
+ build: .
+ command: bundle exec rails s -p 3000 -b '0.0.0.0'
+ ports:
+ - "3000:3000"
+ depends_on:
+ - db
+ - redis
+ env_file: .env.production