2 # expose public port 80 to map to private docker port 80 (web)
4 # expose public port 2222 to map to private docker port 22 (ssh)
7 # ENV is baked in to the image, any changes here require ./launcher bootstrap to run
9 # Comma delimited list of emails, required if you want admin access for first account
10 DEVELOPER_EMAILS: 'YOUR_EMAIL@EMAIL.COM1'
11 # You can have redis on a different box
12 # REDIS_PROVIDER_URL: 'redis://l.discourse:6379'
13 RAILS_ENV: 'production'
18 # SSH key is required for remote access into the container
19 ssh_key: YOUR_SSH_KEY_HERE
22 home: /var/www/discourse
24 # You can connect to any DB you wish to
29 socket: /var/run/postgresql
37 path: /etc/service/unicorn/run
43 sv start redis || exit 1
44 sv start postgres || exit 1
46 exec sudo -E -u discourse bundle exec config/unicorn_launcher config/unicorn.conf.rb
49 path: /etc/service/sidekiq/run
55 sv start redis || exit 1
56 sv start postgres || exit 1
58 exec sudo -E -u discourse bundle exec sidekiq
61 path: /etc/service/sshd/run
66 exec /usr/sbin/sshd -D -e
69 path: /etc/service/redis/run
74 exec sudo -u redis /usr/bin/redis-server /etc/redis/redis.conf
77 path: /etc/service/nginx/run
85 path: /etc/service/postgres/run
90 exec sudo -u postgres /usr/lib/postgresql/9.2/bin/postmaster -D /etc/postgresql/9.2/main
101 - cp config/database.yml.production-sample config/database.yml
102 - cp config/redis.yml.sample config/redis.yml
103 - cp config/environments/production.rb.sample config/environments/production.rb
105 - mkdir -p tmp/sockets
106 - mkdir -p /shared/log/rails
108 - ln -s /shared/log/rails $home/log
109 - mkdir -p /shared/uploads
110 - ln -s /shared/uploads $home/public/uploads
111 - chown -R discourse /shared/uploads
112 - chown -R discourse /shared/log/rails
115 - mkdir -p /var/run/sshd
116 - mkdir -p /root/.ssh
117 - echo $ssh_key >> /root/.ssh/authorized_keys
120 - "cp $home/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf"
121 - "rm /etc/nginx/sites-enabled/default"
124 filename: /etc/nginx/nginx.conf
125 from: pid /run/nginx.pid;
129 filename: "/etc/nginx/conf.d/discourse.conf"
130 from: /upstream[^\}]+\}/m
131 to: "upstream discourse {
132 server 127.0.0.1:3000;
136 filename: "/etc/nginx/conf.d/discourse.conf"
137 from: /server_name.+$/
141 filename: "/etc/redis/redis.conf"
142 from: "daemonize yes"
145 filename: "/etc/redis/redis.conf"
151 - mkdir -p /shared/redis_data
152 - chown -R redis /shared/redis_data
153 - chgrp -R redis /shared/redis_data
156 filename: "/etc/redis/redis.conf"
161 filename: "/etc/redis/redis.conf"
163 to: "dir /shared/redis_data"
165 # we can not migrate without redis
168 cmd: "sudo -u redis /usr/bin/redis-server /etc/redis/redis.conf"
170 - merge: $home/config/database.yml $database_yml
174 - chown -R root /var/lib/postgresql/9.2/main
175 - "[ ! -e /shared/postgres_data ] && cp -r /var/lib/postgresql/9.2/main /shared/postgres_data || exit 0"
176 - chown -R postgres /shared/postgres_data
177 - chgrp -R postgres /shared/postgres_data
180 filename: "/etc/postgresql/9.2/main/postgresql.conf"
181 from: "data_directory = '/var/lib/postgresql/9.2/main'"
182 to: "data_directory = '/shared/postgres_data'"
186 cmd: "sudo -u postgres /usr/lib/postgresql/9.2/bin/postmaster -D /etc/postgresql/9.2/main"
188 # give db a few secs to start up
191 - exec: sudo -u postgres createdb discourse || exit 0
194 create user discourse;
195 cmd: sudo -u postgres psql discourse
200 grant all privileges on database discourse to discourse;
201 cmd: sudo -u postgres psql discourse
204 - exec: /bin/bash -c 'sudo -u postgres psql discourse <<< "create extension if not exists hstore;"'
205 - exec: /bin/bash -c 'sudo -u postgres psql discourse <<< "create extension if not exists pg_trgm;"'
211 - chown -R discourse $home
212 - sudo -E -u discourse bundle install --deployment
213 - sudo -E -u discourse bundle exec rake db:migrate
214 - sudo -E -u discourse bundle exec rake assets:precompile