stack_car 0.2.8 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/exe/sc +1 -1
- data/lib/stack_car/cli.rb +9 -15
- data/lib/stack_car/version.rb +1 -1
- data/stack_car.gemspec +2 -2
- data/templates/.env.erb +2 -0
- data/templates/.gitlab-ci.yml.erb +30 -29
- data/templates/Dockerfile.erb +17 -4
- data/templates/README.md +1 -1
- data/templates/database.yml.erb +2 -0
- data/templates/docker-compose.yml.erb +3 -15
- data/templates/env.conf.erb +22 -0
- data/templates/ops/deploy-app +5 -0
- data/templates/webapp.conf.erb +15 -0
- metadata +14 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab548993e40ac69f202ebd527b9267a894384564
|
4
|
+
data.tar.gz: e83132c55cb05ecbfa64030fc4ef1c285a30e4ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 83328c92add8711e0d8a22519de375069ad8f3b11e5741eca0daaee75305564bdda5038f74183cb6da4b2c0da830791dfb2a2ea613761720b80fb373be6e99dc
|
7
|
+
data.tar.gz: 070fc4e7bf7d2d00a3b0607ac23d20ae77f33c3fdf398b605383c362dd527167634c64c3b2002738d6a4320b635cd8bbf9815536f8fd9c969fc882283789dacd
|
data/exe/sc
CHANGED
@@ -1 +1 @@
|
|
1
|
-
stack_car
|
1
|
+
exe/stack_car
|
data/lib/stack_car/cli.rb
CHANGED
@@ -12,25 +12,16 @@ module StackCar
|
|
12
12
|
|
13
13
|
method_option :service, default: 'web', type: :string, aliases: '-s'
|
14
14
|
method_option :build, default: false, type: :boolean, aliases: '-b'
|
15
|
-
method_option :foreground, default: false, type: :boolean, aliases: '-f'
|
16
15
|
method_option :logs, default: true, type: :boolean
|
17
16
|
desc "up", "starts docker-compose with rebuild and orphan removal, defaults to web"
|
18
17
|
def up
|
19
18
|
args = ['--remove-orphans']
|
20
19
|
args << '--build' if options[:build]
|
21
|
-
args << '-d' if !options[:foreground]
|
22
20
|
if options[:build]
|
23
21
|
run("docker-compose pull #{options[:service]}")
|
24
22
|
end
|
25
23
|
|
26
24
|
run("docker-compose up #{args.join(' ')} #{options[:service]}")
|
27
|
-
|
28
|
-
if options[:build]
|
29
|
-
@project_name = File.basename(File.expand_path('.'))
|
30
|
-
say 'copying bundle to local, you can start using the app now.'
|
31
|
-
run("docker cp #{@project_name}_#{options[:service]}_1:/bundle .") if options[:build]
|
32
|
-
end
|
33
|
-
run("docker-compose logs --tail 20 --follow ") if options[:logs]
|
34
25
|
end
|
35
26
|
|
36
27
|
method_option :service, default: '', type: :string, aliases: '-s'
|
@@ -63,8 +54,6 @@ module StackCar
|
|
63
54
|
desc "bundle ARGS", "wraps docker-compose run web unless --service is used to specify"
|
64
55
|
def bundle(*args)
|
65
56
|
run("docker-compose exec #{options[:service]} bundle")
|
66
|
-
@project_name = File.basename(File.expand_path('.'))
|
67
|
-
run("docker cp #{@project_name}_#{options[:service]}_1:/bundle .")
|
68
57
|
end
|
69
58
|
|
70
59
|
method_option :service, default: 'web', type: :string, aliases: '-s'
|
@@ -119,9 +108,10 @@ module StackCar
|
|
119
108
|
method_option :postgres, default: false, type: :boolean, aliases: '-p'
|
120
109
|
method_option :mysql, default: false, type: :boolean, aliases: '-m'
|
121
110
|
method_option :redis, default: false, type: :boolean, aliases: '-r'
|
122
|
-
method_option :delayed_job, default: false, type: :boolean, aliases: '-
|
111
|
+
method_option :delayed_job, default: false, type: :boolean, aliases: '-j'
|
123
112
|
method_option :fcrepo, default: false, type: :boolean, aliases: '-f'
|
124
113
|
method_option :deploy, default: false, type: :boolean, aliases: '-d'
|
114
|
+
method_option :heroku, default: false, type: :boolean, aliases: '-h'
|
125
115
|
method_option :rancher, default: false, type: :boolean, aliases: '-dr'
|
126
116
|
method_option :sidekiq, default: false, type: :boolean, aliases: '-sq' # TODO
|
127
117
|
method_option :mongodb, default: false, type: :boolean, aliases: '-mg'
|
@@ -148,9 +138,6 @@ module StackCar
|
|
148
138
|
template("#{template_file}.erb", template_file)
|
149
139
|
end
|
150
140
|
template("database.yml.erb", "config/database.yml")
|
151
|
-
empty_directory('bundle')
|
152
|
-
run("touch bundle/.gitkeep && git add bundle/.gitkeep") unless File.exists?('bundle/.gitkeep')
|
153
|
-
insert_into_file ".gitignore", "/bundle", :after => "/.bundle"
|
154
141
|
if File.exists?('README.md')
|
155
142
|
prepend_to_file "README.md" do
|
156
143
|
File.read("#{self.class.source_root}/README.md")
|
@@ -166,6 +153,13 @@ module StackCar
|
|
166
153
|
template("#{template_file}.erb", "ops/#{template_file}")
|
167
154
|
end
|
168
155
|
say 'Please update ops/hosts with the correct server addresses'
|
156
|
+
else
|
157
|
+
empty_directory('ops')
|
158
|
+
end
|
159
|
+
|
160
|
+
# Do this after we figure out whether to use an empty ops directory or a full one
|
161
|
+
['env.conf', 'webapp.conf'].each do |template_file|
|
162
|
+
template("#{template_file}.erb", "ops/#{template_file}")
|
169
163
|
end
|
170
164
|
end
|
171
165
|
|
data/lib/stack_car/version.rb
CHANGED
data/stack_car.gemspec
CHANGED
@@ -25,6 +25,6 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_development_dependency "yard"
|
26
26
|
spec.add_development_dependency "yard-thor"
|
27
27
|
spec.add_development_dependency "pry"
|
28
|
-
spec.add_dependency
|
29
|
-
spec.add_dependency
|
28
|
+
spec.add_dependency "dotenv", "~> 2.0"
|
29
|
+
spec.add_dependency "thor", "~> 0.19"
|
30
30
|
end
|
data/templates/.env.erb
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
image: docker:latest
|
2
2
|
services:
|
3
3
|
- docker:dind
|
4
|
-
|
4
|
+
<% if options[:postgres] -%>
|
5
5
|
- postgres:latest
|
6
|
-
|
7
|
-
|
6
|
+
<% end -%>
|
7
|
+
<% if options[:mysql] -%>
|
8
8
|
- mysql:latest
|
9
|
-
|
10
|
-
|
9
|
+
<% end -%>
|
10
|
+
<% if options[:solr] -%>
|
11
11
|
- solr:latest
|
12
|
-
|
13
|
-
|
12
|
+
<% end -%>
|
13
|
+
<% if options[:elasticsearch] -%>
|
14
14
|
- elasticsearch:latest
|
15
|
-
|
16
|
-
|
15
|
+
<% end -%>
|
16
|
+
<% if options[:redis] -%>
|
17
17
|
- redis:latest
|
18
|
-
|
18
|
+
<% end -%>
|
19
19
|
|
20
20
|
stages:
|
21
21
|
- build
|
@@ -25,15 +25,15 @@ stages:
|
|
25
25
|
- production
|
26
26
|
|
27
27
|
variables:
|
28
|
-
|
28
|
+
<% if options[:postgres] -%>
|
29
29
|
POSTGRES_DB: <%= @project_name %>
|
30
30
|
POSTGRES_USER: postgres
|
31
31
|
POSTGRES_PASSWORD: DatabaseFTW
|
32
|
-
|
33
|
-
|
32
|
+
<% end -%>
|
33
|
+
<% if options[:MYSQL] -%>
|
34
34
|
MYSQL_DATABASE: <%= @project_name %>
|
35
35
|
MYSQL_ROOT_PASSWORD: DatabaseFTW
|
36
|
-
|
36
|
+
<% end -%>
|
37
37
|
TEST_DB: <%= @project_name %>
|
38
38
|
DOCKER_DRIVER: overlay
|
39
39
|
|
@@ -85,12 +85,12 @@ review:
|
|
85
85
|
stop_review:
|
86
86
|
stage: review
|
87
87
|
script:
|
88
|
-
|
88
|
+
<% if options[:rancher] -%>
|
89
89
|
- wget https://github.com/rancher/cli/releases/download/v0.4.1/rancher-linux-amd64-v0.4.1.tar.gz
|
90
90
|
- tar zxfv rancher-linux-amd64-v0.4.1.tar.gz
|
91
91
|
- export RANCHER_ENVIRONMENT=staging
|
92
92
|
- ./rancher-v0.4.1/rancher rm $CI_BUILD_REF_SLUG
|
93
|
-
|
93
|
+
<% end %>
|
94
94
|
variables:
|
95
95
|
GIT_STRATEGY: none
|
96
96
|
when: manual
|
@@ -102,13 +102,13 @@ staging:
|
|
102
102
|
stage: staging
|
103
103
|
type: deploy
|
104
104
|
script:
|
105
|
-
|
106
|
-
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
105
|
+
<% if options[:rancher] -%>
|
106
|
+
- ./ops/deploy-app
|
107
|
+
<% end -%>
|
108
|
+
<% if options[:heroku] -%>
|
109
|
+
- gem install dpl multi_json
|
110
|
+
- dpl --provider=heroku --app=<%= @project_name %>-staging --api-key=$HEROKU_STAGING_API_KEY --run="bundle exec rake db:migrate"
|
111
|
+
<% end -%>
|
112
112
|
only:
|
113
113
|
- master
|
114
114
|
variables:
|
@@ -120,12 +120,13 @@ production:
|
|
120
120
|
stage: production
|
121
121
|
type: deploy
|
122
122
|
script:
|
123
|
-
|
124
|
-
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
123
|
+
<% if options[:rancher] -%>
|
124
|
+
- ./ops/deploy-app
|
125
|
+
<% end -%>
|
126
|
+
<% if options[:heroku] -%>
|
127
|
+
- gem install dpl multi_json
|
128
|
+
- dpl --provider=heroku --app=<%= @project_name %> --api-key=$HEROKU_PRODUCTION_API_KEY --run="bundle exec rake db:migrate"
|
129
|
+
<% end -%>
|
129
130
|
when: manual
|
130
131
|
only:
|
131
132
|
- master
|
data/templates/Dockerfile.erb
CHANGED
@@ -12,17 +12,30 @@ RUN mkdir -p /opt/fits && \
|
|
12
12
|
chmod +x fits-0.8.5/fits.sh
|
13
13
|
|
14
14
|
<% end -%>
|
15
|
-
ENV APP_HOME /app
|
16
15
|
|
16
|
+
RUN rm /etc/nginx/sites-enabled/default
|
17
|
+
COPY ops/webapp.conf /etc/nginx/sites-enabled/webapp.conf
|
18
|
+
COPY ops/env.conf /etc/nginx/main.d/env.conf
|
19
|
+
|
20
|
+
ENV APP_HOME /home/app/webapp
|
17
21
|
RUN mkdir $APP_HOME
|
18
22
|
WORKDIR $APP_HOME
|
19
23
|
|
20
|
-
COPY ./bundle /bundle
|
21
24
|
ENV BUNDLE_GEMFILE=$APP_HOME/Gemfile \
|
22
|
-
BUNDLE_JOBS=
|
23
|
-
BUNDLE_PATH=/bundle
|
25
|
+
BUNDLE_JOBS=4
|
24
26
|
|
25
27
|
ADD Gemfile* $APP_HOME/
|
26
28
|
RUN bundle check || bundle install
|
27
29
|
|
30
|
+
<% if options[:delayed_job] %>
|
31
|
+
RUN touch /var/log/worker.log && chmod 666 /var/log/worker.log
|
32
|
+
RUN mkdir /etc/service/worker
|
33
|
+
ADD ops/worker.sh /etc/service/worker/run
|
34
|
+
<% end %>
|
35
|
+
|
28
36
|
COPY . $APP_HOME
|
37
|
+
RUN chown -R app $APP_HOME
|
38
|
+
|
39
|
+
RUN rm -f /etc/service/nginx/down
|
40
|
+
|
41
|
+
CMD ["/sbin/my_init"]
|
data/templates/README.md
CHANGED
data/templates/database.yml.erb
CHANGED
@@ -73,11 +73,11 @@ services:
|
|
73
73
|
ports:
|
74
74
|
- "8080"
|
75
75
|
<% end -%>
|
76
|
-
|
76
|
+
web:
|
77
77
|
build: .
|
78
78
|
image: "${REGISTRY_HOST}/${REGISTRY_URI}:${TAG:-master}"
|
79
79
|
volumes:
|
80
|
-
- .:/app
|
80
|
+
- .:/home/app/webapp
|
81
81
|
env_file:
|
82
82
|
- .env
|
83
83
|
# Keep the stdin open, so we can attach to our app container's process
|
@@ -85,20 +85,8 @@ services:
|
|
85
85
|
stdin_open: true
|
86
86
|
# Enable sending signals (CTRL+C, CTRL+P + CTRL+Q) into the container:
|
87
87
|
tty: true
|
88
|
-
<% if options[:delayed_job] -%>
|
89
|
-
delayed_job:
|
90
|
-
extends:
|
91
|
-
service: main
|
92
|
-
command: ./bin/delayed_job run
|
93
|
-
depends_on:
|
94
|
-
<%= compose_depends(:delayed_job) %>
|
95
|
-
<% end -%>
|
96
|
-
web:
|
97
|
-
extends:
|
98
|
-
service: main
|
99
|
-
command: bundle exec rails s -p 3000 -b '0.0.0.0'
|
100
88
|
ports:
|
101
|
-
- "
|
89
|
+
- "80"
|
102
90
|
depends_on:
|
103
91
|
<%= compose_depends %>
|
104
92
|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<% if options[:postgres] -%>
|
2
|
+
env POSTGRES_DB;
|
3
|
+
env POSTGRES_USER;
|
4
|
+
env POSTGRES_PASSWORD;
|
5
|
+
env POSTGRES_HOST;
|
6
|
+
env TEST_DB;
|
7
|
+
<% end -%>
|
8
|
+
<% if options[:mysql] -%>
|
9
|
+
env MYSQL_DATABASE;
|
10
|
+
env MYSQL_USER;
|
11
|
+
env MYSQL_PASSWORD;
|
12
|
+
env MYSQL_ROOT_PASSWORD;
|
13
|
+
env MYSQL_HOST;
|
14
|
+
env TEST_DB;
|
15
|
+
<% end -%>
|
16
|
+
<% if options[:deploy] || options[:rancher] -%>
|
17
|
+
env REGISTRY_HOST;
|
18
|
+
env REGISTRY_URI;
|
19
|
+
env SITE_URI;
|
20
|
+
<% end -%>
|
21
|
+
env TAG;
|
22
|
+
env VIRUAL_PORT;
|
@@ -0,0 +1,15 @@
|
|
1
|
+
server {
|
2
|
+
listen 80;
|
3
|
+
server_name _;
|
4
|
+
root /home/app/webapp/public;
|
5
|
+
client_body_in_file_only clean;
|
6
|
+
client_body_buffer_size 32K;
|
7
|
+
|
8
|
+
client_max_body_size 0;
|
9
|
+
|
10
|
+
sendfile on;
|
11
|
+
send_timeout 300s;
|
12
|
+
# The following deploys your Ruby/Python/Node.js/Meteor app on Passenger.
|
13
|
+
passenger_enabled on;
|
14
|
+
passenger_user app;
|
15
|
+
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stack_car
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rob Kaufman
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-04-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -98,30 +98,30 @@ dependencies:
|
|
98
98
|
name: dotenv
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
103
|
+
version: '2.0'
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
110
|
+
version: '2.0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: thor
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
117
|
+
version: '0.19'
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - "
|
122
|
+
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
124
|
+
version: '0.19'
|
125
125
|
description:
|
126
126
|
email:
|
127
127
|
- rob@notch8.com
|
@@ -159,7 +159,9 @@ files:
|
|
159
159
|
- templates/docker-compose-ci.yml.erb
|
160
160
|
- templates/docker-compose-prod.yml.erb
|
161
161
|
- templates/docker-compose.yml.erb
|
162
|
+
- templates/env.conf.erb
|
162
163
|
- templates/hosts.erb
|
164
|
+
- templates/ops/deploy-app
|
163
165
|
- templates/ops/deploy.yml
|
164
166
|
- templates/ops/provision.yml
|
165
167
|
- templates/ops/roles/docker.centos/README.md
|
@@ -178,6 +180,7 @@ files:
|
|
178
180
|
- templates/ops/roles/docker.ubuntu/templates/docker.conf
|
179
181
|
- templates/ops/roles/docker.ubuntu/tests/vagrant.yml
|
180
182
|
- templates/ops/roles/docker.ubuntu/vars/main.yml
|
183
|
+
- templates/webapp.conf.erb
|
181
184
|
homepage: https://gitlab.com/notch8/stack_car
|
182
185
|
licenses: []
|
183
186
|
metadata: {}
|
@@ -197,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
197
200
|
version: '0'
|
198
201
|
requirements: []
|
199
202
|
rubyforge_project:
|
200
|
-
rubygems_version: 2.
|
203
|
+
rubygems_version: 2.6.11
|
201
204
|
signing_key:
|
202
205
|
specification_version: 4
|
203
206
|
summary: A tool to make rails + docker easy
|