template for a standalone install

This commit is contained in:
Sam Saffron 2013-11-03 20:01:42 -08:00
parent fbdbfba4cb
commit 7cae8e4b01
1 changed files with 208 additions and 0 deletions

208
standalone.template.yml Normal file
View File

@ -0,0 +1,208 @@
# expose:
# expose public port 80 to map to private docker port 80 (web)
# - "80:80"
# expose public port 2222 to map to private docker port 22 (ssh)
# - "2222:22"
# ENV is baked in to the image, any changes here require ./launcher bootstrap to run
env:
# Comma delimited list of emails, required if you want admin access for first account
DEVELOPER_EMAILS: 'YOUR_EMAIL@EMAIL.COM1'
# You can have redis on a different box
# REDIS_PROVIDER_URL: 'redis://l.discourse:6379'
RAILS_ENV: 'production'
RAILS4: 1
UNICORN_WORKERS: 3
params:
# SSH key is required for remote access into the container
ssh_key: YOUR_SSH_KEY_HERE
version: HEAD
home: /var/www/discourse
# You can connect to any DB you wish to
database_yml:
production:
database: discourse
username: discourse
socket: /var/run/postgresql
password:
host:
host_names:
- YOUR_HOSTNAME_HERE
run:
- file:
path: /etc/service/unicorn/run
chmod: "+x"
contents: |
#!/bin/bash
exec 2>&1
$env
sv start redis || exit 1
sv start postgres || exit 1
cd $home
exec sudo -E -u discourse bundle exec unicorn -c config/unicorn.conf.rb
- file:
path: /etc/service/sidekiq/run
chmod: "+x"
contents: |
#!/bin/bash
exec 2>&1
$env
sv start redis || exit 1
sv start postgres || exit 1
cd $home
exec sudo -E -u discourse bundle exec sidekiq
- file:
path: /etc/service/sshd/run
chmod: "+x"
contents: |
#!/bin/sh
exec 2>&1
exec /usr/sbin/sshd -D -e
- file:
path: /etc/service/redis/run
chmod: "+x"
contents: |
#!/bin/sh
exec 2>&1
exec sudo -u redis /usr/bin/redis-server /etc/redis/redis.conf
- file:
path: /etc/service/nginx/run
chmod: "+x"
contents: |
#!/bin/sh
exec 2>&1
exec /usr/sbin/nginx
- file:
path: /etc/service/postgres/run
chmod: "+x"
contents: |
#!/bin/sh
exec 2>&1
exec sudo -u postgres /usr/lib/postgresql/9.2/bin/postmaster -D /etc/postgresql/9.2/main
- exec:
cd: $home
cmd:
- git reset --hard
- git clean -f
- git pull
- git checkout $head
- cp config/database.yml.production-sample config/database.yml
- cp config/redis.yml.sample config/redis.yml
- cp config/environments/production.rb.sample config/environments/production.rb
- mkdir -p tmp/pids
- mkdir -p tmp/sockets
- mkdir -p log
- exec:
cmd:
- mkdir -p /var/run/sshd
- mkdir -p /root/.ssh
- echo $ssh_key >> /root/.ssh/authorized_keys
- exec:
cmd:
- "cp $home/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf"
- "rm /etc/nginx/sites-enabled/default"
- replace:
filename: /etc/nginx/nginx.conf
from: pid /run/nginx.pid;
to: daemon off;
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: /upstream[^\}]+\}/m
to: "upstream discourse {
server 127.0.0.1:3000;
}"
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: /server_name.+$/
to: server_name _ ;
- replace:
filename: "/etc/redis/redis.conf"
from: "daemonize yes"
to: ""
- replace:
filename: "/etc/redis/redis.conf"
from: /^pidfile.*$/
to: ""
- exec:
cmd:
- mkdir -p /shared/redis_data
- chown -R redis /shared/redis_data
- chgrp -R redis /shared/redis_data
- replace:
filename: "/etc/redis/redis.conf"
from: /^logfile.*$/
to: "logfile stdout"
- replace:
filename: "/etc/redis/redis.conf"
from: /^dir .*$/
to: "dir /shared/redis_data"
# we can not migrate without redis
- exec:
background: true
cmd: "sudo -u redis /usr/bin/redis-server /etc/redis/redis.conf"
- merge: $home/config/database.yml $database_yml
- exec:
cmd:
- chown -R root /var/lib/postgresql/9.2/main
- "[ ! -e /shared/postgres_data ] && cp -r /var/lib/postgresql/9.2/main /shared/postgres_data || exit 0"
- chown -R postgres /shared/postgres_data
- chgrp -R postgres /shared/postgres_data
- replace:
filename: "/etc/postgresql/9.2/main/postgresql.conf"
from: "data_directory = '/var/lib/postgresql/9.2/main'"
to: "data_directory = '/shared/postgres_data'"
- exec:
background: true
cmd: "sudo -u postgres /usr/lib/postgresql/9.2/bin/postmaster -D /etc/postgresql/9.2/main"
# give db a few secs to start up
- exec: "sleep 5"
- exec: sudo -u postgres createdb discourse || exit 0
- exec:
stdin: |
create user discourse;
cmd: sudo -u postgres psql discourse
raise_on_fail: false
- exec:
stdin: |
grant all privileges on database discourse to discourse;
cmd: sudo -u postgres psql discourse
raise_on_fail: false
- exec: /bin/bash -c 'sudo -u postgres psql discourse <<< "create extension if not exists hstore;"'
- exec: /bin/bash -c 'sudo -u postgres psql discourse <<< "create extension if not exists pg_trgm;"'
- exec:
cd: $home
cmd:
- chown -R discourse $home
- sudo -E -u discourse bundle install --deployment
- sudo -E -u discourse bundle exec rake db:migrate
- sudo -E -u discourse bundle exec rake assets:precompile