ruby_yacht 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/doc/TODO.md +1 -8
  4. data/lib/ruby_yacht/dsl/app.rb +37 -10
  5. data/lib/ruby_yacht/dsl/configuration.rb +21 -21
  6. data/lib/ruby_yacht/dsl/database.rb +53 -0
  7. data/lib/ruby_yacht/dsl/dsl.rb +14 -8
  8. data/lib/ruby_yacht/dsl/hook.rb +35 -15
  9. data/lib/ruby_yacht/dsl/project.rb +23 -10
  10. data/lib/ruby_yacht/dsl/{app_type.rb → server_type.rb} +39 -29
  11. data/lib/ruby_yacht/dsl.rb +1 -1
  12. data/lib/ruby_yacht/images/app/Dockerfile.erb +9 -5
  13. data/lib/ruby_yacht/images/app-dependencies/Dockerfile.erb +2 -2
  14. data/lib/ruby_yacht/images/database/Dockerfile.erb +12 -11
  15. data/lib/ruby_yacht/images/web/Dockerfile.erb +6 -2
  16. data/lib/ruby_yacht/images/web/add_app.rb +7 -1
  17. data/lib/ruby_yacht/images/web/app_config.erb +2 -0
  18. data/lib/ruby_yacht/plugins/mysql/scripts/setup.bash +11 -0
  19. data/lib/ruby_yacht/plugins/mysql.rb +27 -0
  20. data/lib/ruby_yacht/plugins/rails/scripts/install_gems.rb +6 -1
  21. data/lib/ruby_yacht/plugins/rails/scripts/load_seeds.rb +6 -4
  22. data/lib/ruby_yacht/plugins/rails/scripts/prepare_rails_for_launch.rb +1 -0
  23. data/lib/ruby_yacht/plugins/rails/scripts/update_rails_config.rb +1 -5
  24. data/lib/ruby_yacht/plugins/rails.rb +12 -4
  25. data/lib/ruby_yacht/plugins.rb +2 -1
  26. data/lib/ruby_yacht/runner/build_images.rb +32 -26
  27. data/lib/ruby_yacht/runner/checkout.rb +5 -4
  28. data/lib/ruby_yacht/runner/run_containers.rb +7 -6
  29. data/lib/ruby_yacht/runner/services.rb +2 -2
  30. data/lib/ruby_yacht/runner/shell.rb +5 -4
  31. data/lib/ruby_yacht/runner/update_hosts.rb +2 -1
  32. data/ruby_yacht.gemspec +1 -1
  33. data/spec/dsl/app_spec.rb +96 -10
  34. data/spec/dsl/configuration_spec.rb +53 -55
  35. data/spec/dsl/database_spec.rb +70 -12
  36. data/spec/dsl/hook_spec.rb +36 -19
  37. data/spec/dsl/project_spec.rb +26 -18
  38. data/spec/dsl/{app_type_spec.rb → server_type_spec.rb} +52 -28
  39. data/spec/fixtures/app-dependencies-dockerfile-rails +3 -0
  40. data/spec/fixtures/database-dockerfile +1 -8
  41. data/spec/fixtures/database-dockerfile-mysql +30 -0
  42. data/spec/fixtures/database-dockerfile-rails +1 -5
  43. data/spec/fixtures/database-dockerfile-with-seed-hooks +1 -8
  44. data/spec/fixtures/mars-before-startup-with-custom-file-copy +6 -0
  45. data/spec/fixtures/mars-dockerfile +0 -4
  46. data/spec/fixtures/mars-dockerfile-rails +2 -2
  47. data/spec/fixtures/mars-dockerfile-with-after-checkout-hooks +0 -4
  48. data/spec/fixtures/mars-dockerfile-with-before-startup-hooks +0 -4
  49. data/spec/fixtures/mars-dockerfile-with-custom-file-copy +23 -0
  50. data/spec/fixtures/mars-dockerfile-with-local-database +27 -0
  51. data/spec/fixtures/mars-dockerfile-with-remote-database +27 -0
  52. data/spec/fixtures/web-dockerfile-with-eponymous-app +20 -0
  53. data/spec/plugins/mysql_spec.rb +64 -0
  54. data/spec/plugins/rails_spec.rb +103 -43
  55. data/spec/runner/build_images_spec.rb +142 -11
  56. data/spec/runner/checkout_spec.rb +4 -4
  57. data/spec/runner/run_containers_spec.rb +21 -2
  58. data/spec/runner/runner_spec.rb +1 -1
  59. data/spec/runner/services_spec.rb +7 -2
  60. data/spec/runner/shell_spec.rb +3 -3
  61. data/spec/runner/update_hosts_spec.rb +26 -0
  62. data/spec/support/test_project.rb +16 -20
  63. metadata +20 -5
  64. data/lib/ruby_yacht/images/database/setup.bash +0 -15
@@ -1,18 +1,18 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe RubyYacht::Hook do
4
- describe "script_name" do
5
- context "with no script path" do
4
+ describe "copied_file_name" do
5
+ context "with no copied_file_path" do
6
6
  it "is an empty string" do
7
- expect(subject.script_name).to eq ""
7
+ expect(subject.copied_file_name).to eq ""
8
8
  end
9
9
  end
10
10
 
11
- context "with a script path" do
12
- before { subject.script_path = "./foo/bar.rb" }
11
+ context "with a a copied_file_path" do
12
+ before { subject.copied_file_path = "./foo/bar.rb" }
13
13
 
14
- it "gets the filename from the script path" do
15
- expect(subject.script_name).to eq "bar.rb"
14
+ it "gets the filename from the path" do
15
+ expect(subject.copied_file_name).to eq "bar.rb"
16
16
  end
17
17
  end
18
18
  end
@@ -25,13 +25,14 @@ describe RubyYacht::Hook do
25
25
  RubyYacht.configuration.clear
26
26
 
27
27
  RubyYacht.configure do
28
- app_type :test do
28
+ server_type :test do
29
+ container_type :app
29
30
  baseline_image 'ubuntu'
30
31
  end
31
32
  end
32
33
 
33
34
  @config_block = Proc.new do
34
- app_type :test
35
+ server_type :test
35
36
  command 'curl google.com'
36
37
  end
37
38
  end
@@ -39,27 +40,27 @@ describe RubyYacht::Hook do
39
40
  it "can create a hook for running a command" do
40
41
  expect(hook.event_time).to eq :before
41
42
  expect(hook.event_type).to eq :startup
42
- expect(hook.app_type).to eq :test
43
+ expect(hook.server_type).to eq :test
43
44
  expect(hook.command).to eq 'curl google.com'
44
45
  end
45
46
 
46
- it "can create a hook for running a command" do
47
+ it "can create a hook for running a script" do
47
48
  @config_block = Proc.new do
48
- app_type :test
49
+ server_type :test
49
50
  script_folder './foo'
50
51
  run_script 'bar.rb'
51
52
  end
52
53
  expect(hook.event_time).to eq :before
53
54
  expect(hook.event_type).to eq :startup
54
- expect(hook.app_type).to eq :test
55
- expect(hook.script_path).to eq './foo/bar.rb'
55
+ expect(hook.server_type).to eq :test
56
+ expect(hook.copied_file_path).to eq './foo/bar.rb'
56
57
  expect(hook.command).to eq '/var/docker/bar.rb'
57
58
  end
58
59
 
59
60
  context "with no command" do
60
61
  before do
61
62
  @config_block = Proc.new do
62
- app_type :test
63
+ server_type :test
63
64
  end
64
65
  end
65
66
 
@@ -71,16 +72,32 @@ describe RubyYacht::Hook do
71
72
  context "with a script name and no script path" do
72
73
  before do
73
74
  @config_block = Proc.new do
74
- app_type :test
75
+ server_type :test
75
76
  run_script 'bar.rb'
76
77
  end
77
78
  end
78
79
 
79
80
  it "creates a hook with with the script relative to the current folder" do
80
- expect(hook.script_path).to eq './bar.rb'
81
+ expect(hook.copied_file_path).to eq './bar.rb'
81
82
  expect(hook.command).to eq '/var/docker/bar.rb'
82
83
  end
83
84
  end
85
+
86
+ context "with a custom command for copying a file" do
87
+ before do
88
+ @config_block = Proc.new do
89
+ server_type :test
90
+ script_folder './foo'
91
+ copy_file 'test.txt'
92
+ command 'scp /var/docker/test.txt test.com:test.txt'
93
+ end
94
+ end
95
+
96
+ it "uses that file as the copied_file_path" do
97
+ expect(hook.copied_file_path).to eq './foo/test.txt'
98
+ expect(hook.command).to eq 'scp /var/docker/test.txt test.com:test.txt'
99
+ end
100
+ end
84
101
 
85
102
  context "with no app type" do
86
103
  before do
@@ -91,14 +108,14 @@ describe RubyYacht::Hook do
91
108
  end
92
109
 
93
110
  it "raises an exception" do
94
- expect { hook }.to raise_exception 'Missing required attribute app_type for RubyYacht::Hook::DSL'
111
+ expect { hook }.to raise_exception 'Missing required attribute server_type for RubyYacht::Hook::DSL'
95
112
  end
96
113
  end
97
114
 
98
115
  context "with an invalid app type" do
99
116
  before do
100
117
  @config_block = Proc.new do
101
- app_type :invalid
118
+ server_type :invalid
102
119
  command 'whoami'
103
120
  end
104
121
  end
@@ -7,7 +7,14 @@ describe RubyYacht::Project do
7
7
  before do
8
8
  RubyYacht.configuration.clear
9
9
  RubyYacht.configure do
10
- app_type(:generic) { baseline_image 'ubuntu' }
10
+ server_type :generic do
11
+ container_type :app
12
+ baseline_image 'ubuntu'
13
+ end
14
+ server_type :sqlite do
15
+ container_type :database
16
+ baseline_image 'ubuntu'
17
+ end
11
18
  end
12
19
  end
13
20
 
@@ -25,11 +32,11 @@ describe RubyYacht::Project do
25
32
  repository_name 'brownleej/test2'
26
33
  end
27
34
 
28
- database do
35
+ database :project1, :sqlite do
29
36
  host "localhost"
30
- name "project1"
31
37
  username "test"
32
38
  password "test"
39
+ container_label :sqlite
33
40
  end
34
41
 
35
42
  dns_server do
@@ -46,7 +53,8 @@ describe RubyYacht::Project do
46
53
  expect(project.primary_app).to eq :app1
47
54
 
48
55
  expect(project.apps.map(&:name)).to eq [:app1, :app2]
49
- expect(project.database.name).to eq 'project1'
56
+ expect(project.databases.map(&:name)).to eq [:project1]
57
+
50
58
  expect(project.dns_server.servers).to eq ['8.10.1.1']
51
59
  end
52
60
 
@@ -63,11 +71,11 @@ describe RubyYacht::Project do
63
71
  repository_name 'brownleej/test2'
64
72
  end
65
73
 
66
- database do
74
+ database :project1, :sqlite do
67
75
  host "localhost"
68
- name "project1"
69
76
  username "test"
70
77
  password "test"
78
+ container_label :sqlite
71
79
  end
72
80
 
73
81
  dns_server do
@@ -93,11 +101,11 @@ describe RubyYacht::Project do
93
101
  repository_name 'brownleej/test2'
94
102
  end
95
103
 
96
- database do
104
+ database :project1, :sqlite do
97
105
  host "localhost"
98
- name "project1"
99
106
  username "test"
100
107
  password "test"
108
+ container_label :sqlite
101
109
  end
102
110
 
103
111
  dns_server do
@@ -123,11 +131,11 @@ describe RubyYacht::Project do
123
131
  repository_name 'brownleej/test2'
124
132
  end
125
133
 
126
- database do
134
+ database :project1, :sqlite do
127
135
  host "localhost"
128
- name "project1"
129
136
  username "test"
130
137
  password "test"
138
+ container_label :sqlite
131
139
  end
132
140
 
133
141
  dns_server do
@@ -146,11 +154,11 @@ describe RubyYacht::Project do
146
154
  domain "a.test.com"
147
155
  repository "github.com"
148
156
 
149
- database do
157
+ database :project1, :sqlite do
150
158
  host "localhost"
151
- name "project1"
152
159
  username "test"
153
160
  password "test"
161
+ container_label :sqlite
154
162
  end
155
163
 
156
164
  dns_server do
@@ -163,7 +171,7 @@ describe RubyYacht::Project do
163
171
  expect(project.apps.count).to eq 0
164
172
  end
165
173
 
166
- it "requires the database config" do
174
+ it "does not require the database config" do
167
175
  @builder = Proc.new do
168
176
  system_prefix :a
169
177
  domain "a.test.com"
@@ -184,7 +192,7 @@ describe RubyYacht::Project do
184
192
  primary_app :app1
185
193
  end
186
194
 
187
- expect { project }.to raise_exception "Missing required attribute database for RubyYacht::Project::DSL"
195
+ expect(project.databases.count).to eq 0
188
196
  end
189
197
 
190
198
  it "does not require the DNS server config" do
@@ -201,11 +209,11 @@ describe RubyYacht::Project do
201
209
  repository_name 'brownleej/test2'
202
210
  end
203
211
 
204
- database do
212
+ database :project1, :sqlite do
205
213
  host "localhost"
206
- name "project1"
207
214
  username "test"
208
215
  password "test"
216
+ container_label :sqlite
209
217
  end
210
218
 
211
219
  primary_app :app1
@@ -228,11 +236,11 @@ describe RubyYacht::Project do
228
236
  repository_name 'brownleej/test2'
229
237
  end
230
238
 
231
- database do
239
+ database :project1, :sqlite do
232
240
  host "localhost"
233
- name "project1"
234
241
  username "test"
235
242
  password "test"
243
+ container_label :sqlite
236
244
  end
237
245
 
238
246
  dns_server do
@@ -1,16 +1,17 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe RubyYacht::AppType do
3
+ describe RubyYacht::ServerType do
4
4
  let(:full_config_block) do
5
5
  Proc.new do
6
+ container_type :app
6
7
  baseline_image 'ubuntu'
7
8
  project_attribute name: :environment, default: 'staging'
8
9
  project_attribute name: :foo
9
10
 
10
- app_attribute name: :bar, required: false
11
+ server_attribute name: :bar, required: false
11
12
 
12
13
  environment_variable :app, 'SECRET_KEY' do
13
- @app.secret_key
14
+ @server.secret_key
14
15
  end
15
16
  end
16
17
  end
@@ -18,7 +19,15 @@ describe RubyYacht::AppType do
18
19
  before do
19
20
  RubyYacht.configuration.clear
20
21
  RubyYacht.configure do
21
- app_type(:generic) { baseline_image 'ubuntu' }
22
+ server_type :generic do
23
+ container_type :app
24
+ baseline_image 'ubuntu'
25
+ end
26
+
27
+ server_type :sqlite do
28
+ container_type :database
29
+ baseline_image 'ubuntu'
30
+ end
22
31
  end
23
32
  end
24
33
 
@@ -28,11 +37,12 @@ describe RubyYacht::AppType do
28
37
  system_prefix 'test-project'
29
38
  repository 'github.com'
30
39
  domain 'test.com'
31
- database do
32
- host 'localhost'
33
- name 'test'
34
- username 'test'
35
- password 'test'
40
+
41
+ database :project1, :sqlite do
42
+ host "localhost"
43
+ username "test"
44
+ password "test"
45
+ container_label :sqlite
36
46
  end
37
47
  end
38
48
  end
@@ -40,7 +50,7 @@ describe RubyYacht::AppType do
40
50
  before do
41
51
  block = full_config_block
42
52
  RubyYacht.configure do
43
- app_type :app_type_test do
53
+ server_type :app_type_test do
44
54
  instance_eval(&block)
45
55
  end
46
56
  end
@@ -61,7 +71,7 @@ describe RubyYacht::AppType do
61
71
 
62
72
  app = RubyYacht.configuration.projects.last.apps.first
63
73
  expect(app.name).to eq :test
64
- expect(app.app_type).to eq :app_type_test
74
+ expect(app.server_type).to eq :app_type_test
65
75
  end
66
76
 
67
77
  it "creates attributes for the project attributes on the Project DSL" do
@@ -137,39 +147,53 @@ describe RubyYacht::AppType do
137
147
  end
138
148
 
139
149
  describe "dsl" do
140
- let(:dsl) { RubyYacht::AppType::DSL.new(:app_type_test) }
141
- let(:app_type) { dsl.run(@config_block).create_object }
150
+ let(:dsl) { RubyYacht::ServerType::DSL.new(:app_type_test) }
151
+ let(:server_type) { dsl.run(@config_block).create_object }
142
152
 
143
153
  before do
144
154
  @config_block = full_config_block
145
155
  end
146
156
 
147
157
  it "sets the information on the app type" do
148
- expect(app_type.name).to eq :app_type_test
149
- expect(app_type.baseline_image).to eq 'ubuntu'
158
+ expect(server_type.name).to eq :app_type_test
159
+ expect(server_type.container_type).to eq :app
160
+ expect(server_type.baseline_image).to eq 'ubuntu'
150
161
 
151
- expect(app_type.project_attributes.count).to eq 2
152
- expect(app_type.project_attributes[0]).to eq(name: :environment, default: 'staging')
153
- expect(app_type.project_attributes[1]).to eq(name: :foo)
162
+ expect(server_type.project_attributes.count).to eq 2
163
+ expect(server_type.project_attributes[0]).to eq(name: :environment, default: 'staging')
164
+ expect(server_type.project_attributes[1]).to eq(name: :foo)
154
165
 
155
- expect(app_type.app_attributes.count).to eq 1
156
- expect(app_type.app_attributes[0]).to eq(name: :bar, required: false)
166
+ expect(server_type.server_attributes.count).to eq 1
167
+ expect(server_type.server_attributes[0]).to eq(name: :bar, required: false)
157
168
 
158
- @app = Object.new
159
- @app.define_singleton_method :secret_key do
169
+ @server = Object.new
170
+ @server.define_singleton_method :secret_key do
160
171
  'abc1234'
161
172
  end
162
173
 
163
- expect(app_type.environment_variables.count).to eq 1
164
- expect(app_type.environment_variables[0][:name]).to eq 'SECRET_KEY'
165
- expect(app_type.environment_variables[0][:image]).to eq :app
166
- expect(instance_eval(&app_type.environment_variables[0][:block])).to eq 'abc1234'
174
+ expect(server_type.environment_variables.count).to eq 1
175
+ expect(server_type.environment_variables[0][:name]).to eq 'SECRET_KEY'
176
+ expect(server_type.environment_variables[0][:image]).to eq :app
177
+ expect(instance_eval(&server_type.environment_variables[0][:block])).to eq 'abc1234'
167
178
  end
168
179
 
169
180
  context "with no baseline image" do
170
181
  it "raises an exception" do
171
- @config_block = Proc.new {}
172
- expect { app_type }.to raise_exception "Missing required attribute baseline_image for RubyYacht::AppType::DSL"
182
+ @config_block = Proc.new do
183
+ container_type :app
184
+ end
185
+
186
+ expect { server_type }.to raise_exception "Missing required attribute baseline_image for RubyYacht::ServerType::DSL"
187
+ end
188
+ end
189
+
190
+ context "with no container type" do
191
+ it "raises an exception" do
192
+ @config_block = Proc.new do
193
+ baseline_image 'ubuntu'
194
+ end
195
+
196
+ expect { server_type }.to raise_exception "Missing required attribute container_type for RubyYacht::ServerType::DSL"
173
197
  end
174
198
  end
175
199
  end
@@ -6,6 +6,9 @@
6
6
 
7
7
  FROM ruby:2.3
8
8
 
9
+ ENV RAILS_ENV development
10
+ ENV EXCLUDED_GEM_GROUPS ""
11
+
9
12
  RUN mkdir -p /root/.ssh
10
13
  COPY id_rsa /root/.ssh
11
14
  RUN ssh-keyscan github.com >> /root/.ssh/known_hosts
@@ -1,25 +1,18 @@
1
1
  FROM apollo-debian-app-dependencies
2
2
 
3
- ENV DEBIAN_FRONTEND noninteractive
4
- RUN apt-get install -y mysql-server
5
-
6
3
  ENV DATABASE_USERNAME apollo
7
4
  ENV DATABASE_PASSWORD test
8
5
  ENV DATABASE_NAME apollo
6
+ ENV DATABASE_TYPE sqlite
9
7
 
10
8
  COPY setup.bash /var/docker/setup.bash
11
9
  COPY checkout.bash /var/docker/checkout.bash
12
10
 
13
11
  RUN chmod u+x /var/docker/*
14
12
 
15
- RUN /var/docker/setup.bash apollo apollo test
16
-
17
13
  RUN /var/docker/checkout.bash github.com mars brownleej/mars
18
14
  WORKDIR /var/code/mars
19
15
 
20
- RUN /var/docker/checkout.bash github.com saturn brownleej/saturn
21
- WORKDIR /var/code/saturn
22
-
23
16
  RUN rm -r /var/docker
24
17
  RUN rm -r /var/code
25
18
 
@@ -0,0 +1,30 @@
1
+ FROM apollo-generic-app-dependencies
2
+
3
+ ENV DATABASE_USERNAME apollo
4
+ ENV DATABASE_PASSWORD test
5
+ ENV DATABASE_NAME apollo
6
+ ENV DATABASE_TYPE mysql
7
+ ENV DEBIAN_FRONTEND noninteractive
8
+
9
+ RUN apt-get install -y mysql-server
10
+
11
+ COPY setup.bash /var/docker/setup.bash
12
+ COPY checkout.bash /var/docker/checkout.bash
13
+
14
+ RUN chmod u+x /var/docker/*
15
+
16
+ RUN /var/docker/setup.bash
17
+
18
+ RUN /var/docker/checkout.bash github.com mars brownleej/mars
19
+ WORKDIR /var/code/mars
20
+
21
+ RUN rm -r /var/docker
22
+ RUN rm -r /var/code
23
+
24
+ ENV DATABASE_USERNAME ''
25
+ ENV DATABASE_PASSWORD ''
26
+ ENV DATABASE_NAME ''
27
+
28
+ EXPOSE 3306
29
+
30
+ CMD mysqld_safe --bind-address=0.0.0.0
@@ -1,11 +1,9 @@
1
1
  FROM apollo-rails-app-dependencies
2
2
 
3
- ENV DEBIAN_FRONTEND noninteractive
4
- RUN apt-get install -y mysql-server
5
-
6
3
  ENV DATABASE_USERNAME apollo
7
4
  ENV DATABASE_PASSWORD test
8
5
  ENV DATABASE_NAME apollo
6
+ ENV DATABASE_TYPE sqlite
9
7
 
10
8
  COPY setup.bash /var/docker/setup.bash
11
9
  COPY checkout.bash /var/docker/checkout.bash
@@ -13,8 +11,6 @@ COPY load_seeds.rb /var/docker/load_seeds.rb
13
11
 
14
12
  RUN chmod u+x /var/docker/*
15
13
 
16
- RUN /var/docker/setup.bash apollo apollo test
17
-
18
14
  RUN /var/docker/checkout.bash github.com mars brownleej/mars
19
15
  WORKDIR /var/code/mars
20
16
  RUN /var/docker/load_seeds.rb
@@ -1,11 +1,9 @@
1
1
  FROM apollo-debian-app-dependencies
2
2
 
3
- ENV DEBIAN_FRONTEND noninteractive
4
- RUN apt-get install -y mysql-server
5
-
6
3
  ENV DATABASE_USERNAME apollo
7
4
  ENV DATABASE_PASSWORD test
8
5
  ENV DATABASE_NAME apollo
6
+ ENV DATABASE_TYPE sqlite
9
7
 
10
8
  COPY setup.bash /var/docker/setup.bash
11
9
  COPY checkout.bash /var/docker/checkout.bash
@@ -13,15 +11,10 @@ COPY hook1.rb /var/docker/hook1.rb
13
11
 
14
12
  RUN chmod u+x /var/docker/*
15
13
 
16
- RUN /var/docker/setup.bash apollo apollo test
17
-
18
14
  RUN /var/docker/checkout.bash github.com mars brownleej/mars
19
15
  WORKDIR /var/code/mars
20
16
  RUN /var/docker/hook1.rb
21
17
 
22
- RUN /var/docker/checkout.bash github.com saturn brownleej/saturn
23
- WORKDIR /var/code/saturn
24
-
25
18
  RUN rm -r /var/docker
26
19
  RUN rm -r /var/code
27
20
 
@@ -0,0 +1,6 @@
1
+ #! /bin/bash
2
+
3
+ cd /var/code;
4
+ /var/docker/checkout.bash;
5
+
6
+ cp /var/docker/hook1.rb /var/code/scripts/hook1.rb;
@@ -1,9 +1,5 @@
1
1
  FROM apollo-generic-app-dependencies
2
2
 
3
- ENV DATABASE_HOST db.test.com
4
- ENV DATABASE_NAME apollo
5
- ENV DATABASE_PASSWORD test
6
- ENV DATABASE_USERNAME apollo
7
3
  ENV APP_PORT 8080
8
4
  ENV REPOSITORY_HOST github.com
9
5
  ENV REPOSITORY_NAME brownleej/mars
@@ -4,11 +4,11 @@ ENV DATABASE_HOST db.test.com
4
4
  ENV DATABASE_NAME apollo
5
5
  ENV DATABASE_PASSWORD test
6
6
  ENV DATABASE_USERNAME apollo
7
+ ENV DATABASE_TYPE sqlite
7
8
  ENV APP_PORT 8080
8
9
  ENV REPOSITORY_HOST github.com
9
10
  ENV REPOSITORY_NAME brownleej/mars
10
11
  ENV SYSTEM_PREFIX apollo
11
- ENV RAILS_ENV development
12
12
  ENV SECRET_KEY_BASE abc
13
13
 
14
14
  RUN rm -r /var/code
@@ -24,7 +24,7 @@ RUN chmod u+x /var/docker/*
24
24
 
25
25
  RUN /var/docker/checkout.bash
26
26
  WORKDIR /var/code
27
- RUN bundle install && bundle clean --force
27
+ RUN bundle install --clean
28
28
 
29
29
  EXPOSE 8080
30
30
 
@@ -1,9 +1,5 @@
1
1
  FROM apollo-generic-app-dependencies
2
2
 
3
- ENV DATABASE_HOST db.test.com
4
- ENV DATABASE_NAME apollo
5
- ENV DATABASE_PASSWORD test
6
- ENV DATABASE_USERNAME apollo
7
3
  ENV APP_PORT 8080
8
4
  ENV REPOSITORY_HOST github.com
9
5
  ENV REPOSITORY_NAME brownleej/mars
@@ -1,9 +1,5 @@
1
1
  FROM apollo-generic-app-dependencies
2
2
 
3
- ENV DATABASE_HOST db.test.com
4
- ENV DATABASE_NAME apollo
5
- ENV DATABASE_PASSWORD test
6
- ENV DATABASE_USERNAME apollo
7
3
  ENV APP_PORT 8080
8
4
  ENV REPOSITORY_HOST github.com
9
5
  ENV REPOSITORY_NAME brownleej/mars
@@ -0,0 +1,23 @@
1
+ FROM apollo-generic-app-dependencies
2
+
3
+ ENV APP_PORT 8080
4
+ ENV REPOSITORY_HOST github.com
5
+ ENV REPOSITORY_NAME brownleej/mars
6
+ ENV SYSTEM_PREFIX apollo
7
+
8
+ RUN rm -r /var/code
9
+ RUN mkdir -p /var/code
10
+
11
+ COPY checkout.bash /var/docker/checkout.bash
12
+ COPY before_startup.bash /var/docker/before_startup.bash
13
+ COPY startup.bash /var/docker/startup.bash
14
+ COPY hook1.rb /var/docker/hook1.rb
15
+
16
+ RUN chmod u+x /var/docker/*
17
+
18
+ RUN /var/docker/checkout.bash
19
+ WORKDIR /var/code
20
+
21
+ EXPOSE 8080
22
+
23
+ CMD /var/docker/startup.bash
@@ -0,0 +1,27 @@
1
+ FROM apollo-generic-app-dependencies
2
+
3
+ ENV DATABASE_HOST apollo-mysql
4
+ ENV DATABASE_NAME apollo
5
+ ENV DATABASE_PASSWORD test
6
+ ENV DATABASE_USERNAME apollo
7
+ ENV DATABASE_TYPE sqlite
8
+ ENV APP_PORT 8080
9
+ ENV REPOSITORY_HOST github.com
10
+ ENV REPOSITORY_NAME brownleej/mars
11
+ ENV SYSTEM_PREFIX apollo
12
+
13
+ RUN rm -r /var/code
14
+ RUN mkdir -p /var/code
15
+
16
+ COPY checkout.bash /var/docker/checkout.bash
17
+ COPY before_startup.bash /var/docker/before_startup.bash
18
+ COPY startup.bash /var/docker/startup.bash
19
+
20
+ RUN chmod u+x /var/docker/*
21
+
22
+ RUN /var/docker/checkout.bash
23
+ WORKDIR /var/code
24
+
25
+ EXPOSE 8080
26
+
27
+ CMD /var/docker/startup.bash
@@ -0,0 +1,27 @@
1
+ FROM apollo-generic-app-dependencies
2
+
3
+ ENV DATABASE_HOST db1.test.com
4
+ ENV DATABASE_NAME apollo
5
+ ENV DATABASE_PASSWORD test
6
+ ENV DATABASE_USERNAME apollo
7
+ ENV DATABASE_TYPE mysql
8
+ ENV APP_PORT 8080
9
+ ENV REPOSITORY_HOST github.com
10
+ ENV REPOSITORY_NAME brownleej/mars
11
+ ENV SYSTEM_PREFIX apollo
12
+
13
+ RUN rm -r /var/code
14
+ RUN mkdir -p /var/code
15
+
16
+ COPY checkout.bash /var/docker/checkout.bash
17
+ COPY before_startup.bash /var/docker/before_startup.bash
18
+ COPY startup.bash /var/docker/startup.bash
19
+
20
+ RUN chmod u+x /var/docker/*
21
+
22
+ RUN /var/docker/checkout.bash
23
+ WORKDIR /var/code
24
+
25
+ EXPOSE 8080
26
+
27
+ CMD /var/docker/startup.bash