Remove unnecessary tools in image to reduce size
[discourse_docker.git] / standalone.template.yml
1 # expose:
2 # expose public port 80 to map to private docker port 80 (web)
3 # - "80:80"
4 # expose public port 2222 to map to private docker port 22 (ssh)
5 # - "2222:22"
6
7 # ENV is baked in to the image, any changes here require ./launcher bootstrap to run
8 env:
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'
14 RAILS4: 1
15 UNICORN_WORKERS: 3
16
17 params:
18 # SSH key is required for remote access into the container
19 ssh_key: YOUR_SSH_KEY_HERE
20 version: HEAD
21
22 home: /var/www/discourse
23
24 # You can connect to any DB you wish to
25 database_yml:
26 production:
27 database: discourse
28 username: discourse
29 socket: /var/run/postgresql
30 password:
31 host:
32 host_names:
33 - YOUR_HOSTNAME_HERE
34
35 run:
36 - file:
37 path: /etc/service/unicorn/run
38 chmod: "+x"
39 contents: |
40 #!/bin/bash
41 exec 2>&1
42 $env
43 sv start redis || exit 1
44 sv start postgres || exit 1
45 cd $home
46 exec sudo -E -u discourse bundle exec config/unicorn_launcher -E production -c config/unicorn.conf.rb
47
48 - file:
49 path: /etc/service/sidekiq/run
50 chmod: "+x"
51 contents: |
52 #!/bin/bash
53 exec 2>&1
54 $env
55 sv start redis || exit 1
56 sv start postgres || exit 1
57 cd $home
58 exec sudo -E -u discourse bundle exec sidekiq
59
60 - file:
61 path: /etc/service/sshd/run
62 chmod: "+x"
63 contents: |
64 #!/bin/sh
65 exec 2>&1
66 exec /usr/sbin/sshd -D -e
67
68 - file:
69 path: /etc/service/redis/run
70 chmod: "+x"
71 contents: |
72 #!/bin/sh
73 exec 2>&1
74 exec sudo -u redis /usr/bin/redis-server /etc/redis/redis.conf
75
76 - file:
77 path: /etc/service/nginx/run
78 chmod: "+x"
79 contents: |
80 #!/bin/sh
81 exec 2>&1
82 exec /usr/sbin/nginx
83
84 - file:
85 path: /etc/service/postgres/run
86 chmod: "+x"
87 contents: |
88 #!/bin/sh
89 exec 2>&1
90 exec sudo -u postgres /usr/lib/postgresql/9.2/bin/postmaster -D /etc/postgresql/9.2/main
91
92
93 - exec:
94 cd: $home
95 hook: code
96 cmd:
97 - git reset --hard
98 - git clean -f
99 - git pull
100 - git checkout $head
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
104 - mkdir -p tmp/pids
105 - mkdir -p tmp/sockets
106 - touch tmp/.gitkeep
107 - mkdir -p /shared/log/rails
108 - rm -r log
109 - ln -s /shared/log/rails $home/log
110 - mkdir -p /shared/uploads
111 - ln -s /shared/uploads $home/public/uploads
112 - chown -R discourse /shared/uploads
113 - chown -R discourse /shared/log/rails
114 - exec:
115 cmd:
116 - mkdir -p /var/run/sshd
117 - mkdir -p /root/.ssh
118 - echo $ssh_key >> /root/.ssh/authorized_keys
119 - exec:
120 cmd:
121 - "cp $home/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf"
122 - "rm /etc/nginx/sites-enabled/default"
123
124 - replace:
125 filename: /etc/nginx/nginx.conf
126 from: pid /run/nginx.pid;
127 to: daemon off;
128
129 - replace:
130 filename: "/etc/nginx/conf.d/discourse.conf"
131 from: /upstream[^\}]+\}/m
132 to: "upstream discourse {
133 server 127.0.0.1:3000;
134 }"
135
136 - replace:
137 filename: "/etc/nginx/conf.d/discourse.conf"
138 from: /server_name.+$/
139 to: server_name _ ;
140
141 - replace:
142 filename: "/etc/redis/redis.conf"
143 from: "daemonize yes"
144 to: ""
145 - replace:
146 filename: "/etc/redis/redis.conf"
147 from: /^pidfile.*$/
148 to: ""
149
150 - exec:
151 cmd:
152 - mkdir -p /shared/redis_data
153 - chown -R redis /shared/redis_data
154 - chgrp -R redis /shared/redis_data
155
156 - replace:
157 filename: "/etc/redis/redis.conf"
158 from: /^logfile.*$/
159 to: "logfile stdout"
160
161 - replace:
162 filename: "/etc/redis/redis.conf"
163 from: /^dir .*$/
164 to: "dir /shared/redis_data"
165
166 # we can not migrate without redis
167 - exec:
168 background: true
169 cmd: "sudo -u redis /usr/bin/redis-server /etc/redis/redis.conf"
170
171 - merge: $home/config/database.yml $database_yml
172
173 - exec:
174 cmd:
175 - chown -R root /var/lib/postgresql/9.2/main
176 - "[ ! -e /shared/postgres_data ] && cp -r /var/lib/postgresql/9.2/main /shared/postgres_data || exit 0"
177 - chown -R postgres /shared/postgres_data
178 - chgrp -R postgres /shared/postgres_data
179
180 - replace:
181 filename: "/etc/postgresql/9.2/main/postgresql.conf"
182 from: "data_directory = '/var/lib/postgresql/9.2/main'"
183 to: "data_directory = '/shared/postgres_data'"
184
185 - exec:
186 background: true
187 cmd: "sudo -u postgres /usr/lib/postgresql/9.2/bin/postmaster -D /etc/postgresql/9.2/main"
188
189 # give db a few secs to start up
190 - exec: "sleep 5"
191
192 - exec: sudo -u postgres createdb discourse || exit 0
193 - exec:
194 stdin: |
195 create user discourse;
196 cmd: sudo -u postgres psql discourse
197 raise_on_fail: false
198
199 - exec:
200 stdin: |
201 grant all privileges on database discourse to discourse;
202 cmd: sudo -u postgres psql discourse
203 raise_on_fail: false
204
205 - exec: /bin/bash -c 'sudo -u postgres psql discourse <<< "create extension if not exists hstore;"'
206 - exec: /bin/bash -c 'sudo -u postgres psql discourse <<< "create extension if not exists pg_trgm;"'
207
208
209 - exec:
210 cd: $home
211 cmd:
212 - chown -R discourse $home
213 - sudo -E -u discourse bundle install --deployment
214 - sudo -E -u discourse bundle exec rake db:migrate
215 - sudo -E -u discourse bundle exec rake assets:precompile
216