docker_houston 0.0.5 → 0.0.7
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.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/README.md +3 -3
- data/lib/docker_houston/capistrano.rb +12 -11
- data/lib/docker_houston/version.rb +1 -1
- data/lib/generators/docker_houston/install_generator.rb +14 -7
- data/lib/generators/templates/Dockerfile.erb +8 -41
- data/lib/generators/templates/{database.yml.docker.erb → database.yml.erb} +5 -3
- data/lib/generators/templates/deploy.rb.erb +1 -1
- data/lib/generators/templates/docker-compose.override.yml.erb +9 -0
- data/lib/generators/templates/docker-compose.prod.yml.erb +12 -0
- data/lib/generators/templates/docker-compose.yml.erb +11 -26
- data/lib/generators/templates/production.rb.erb +10 -0
- metadata +7 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b31e55cc510552a411c10015a01b4018a8f454ec
|
|
4
|
+
data.tar.gz: 656916f767d3b046b97fbb2ec974d2d58c56272b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 26b89983f5b668b2add7bf263a8dd2d4de678b83ba5905b49c2a2191179c45aa1d0e3ee425a80e34b6b54bf91b372ff42b5ad20ed76d01603aea6e2120b5f444
|
|
7
|
+
data.tar.gz: c9ed3230605b38187ea0c3133f6fd7806eca8ca14375e07f2ddae44b1f16ac3e304a303ccd089f2a761f5ebe91d747a1a802e3c6f20831e648ac35dbcc384c89
|
data/README.md
CHANGED
|
@@ -49,11 +49,11 @@ rails g docker_houston:install APP_NAME APP_DOMAIN DOCKER_HOST
|
|
|
49
49
|
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
APP_NAME
|
|
52
|
+
`APP_NAME`: the app name for your project.
|
|
53
53
|
|
|
54
|
-
APP_DOMAIN
|
|
54
|
+
`APP_DOMAIN`: the virtual url for the app.
|
|
55
55
|
|
|
56
|
-
DOCKER_HOST
|
|
56
|
+
`DOCKER_HOST`: the remote host for docker instance.
|
|
57
57
|
|
|
58
58
|
|
|
59
59
|
###Make `bin/docker` executable
|
|
@@ -21,7 +21,7 @@ def exec_on_remote(command, message="Executing command on remote...", container_
|
|
|
21
21
|
on roles :app do |server|
|
|
22
22
|
ssh_cmd = "ssh -A -t #{server.user}@#{server.hostname}"
|
|
23
23
|
puts message
|
|
24
|
-
exec "#{ssh_cmd} 'cd #{fetch(:release_dir)} && docker-compose -p #{fetch(:app_with_stage)} run web #{command}'"
|
|
24
|
+
exec "#{ssh_cmd} 'cd #{fetch(:release_dir)} && docker-compose -f docker-compose.yml -f docker-compose.prod.yml -p #{fetch(:app_with_stage)} run web #{command}'"
|
|
25
25
|
end
|
|
26
26
|
end
|
|
27
27
|
|
|
@@ -48,7 +48,7 @@ namespace :docker do
|
|
|
48
48
|
task :lift_off do
|
|
49
49
|
on roles :app do
|
|
50
50
|
invoke 'deploy'
|
|
51
|
-
invoke 'docker:
|
|
51
|
+
invoke 'docker:setup_env'
|
|
52
52
|
invoke 'docker:build_container'
|
|
53
53
|
invoke 'docker:stop'
|
|
54
54
|
invoke 'docker:start'
|
|
@@ -58,12 +58,13 @@ namespace :docker do
|
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
60
|
|
|
61
|
-
desc '
|
|
62
|
-
task :
|
|
61
|
+
desc 'Setup Environment file'
|
|
62
|
+
task :setup_env do
|
|
63
63
|
on roles :app do
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
env_file = "#{fetch(:shared_dir)}/.env"
|
|
65
|
+
unless test "[ -f #{env_file} ]"
|
|
66
|
+
require 'securerandom'
|
|
67
|
+
execute :echo, "'VIRTUAL_HOST=#{fetch(:app_domain)}\nSECRET_KEY_BASE=#{SecureRandom.hex(64)}' > #{env_file}"
|
|
67
68
|
end
|
|
68
69
|
end
|
|
69
70
|
end
|
|
@@ -72,7 +73,7 @@ namespace :docker do
|
|
|
72
73
|
task :build_container do
|
|
73
74
|
on roles :app do
|
|
74
75
|
within fetch(:release_dir) do
|
|
75
|
-
execute "cd #{fetch(:release_dir)} && docker-compose -p #{fetch(:app_with_stage)} build web"
|
|
76
|
+
execute "cd #{fetch(:release_dir)} && docker-compose -f docker-compose.yml -f docker-compose.prod.yml -p #{fetch(:app_with_stage)} build web"
|
|
76
77
|
end
|
|
77
78
|
end
|
|
78
79
|
end
|
|
@@ -81,7 +82,7 @@ namespace :docker do
|
|
|
81
82
|
task :start do
|
|
82
83
|
on roles :app do
|
|
83
84
|
within fetch(:release_dir) do
|
|
84
|
-
execute "cd #{fetch(:release_dir)} && docker-compose -p #{fetch(:app_with_stage)} up -d"
|
|
85
|
+
execute "cd #{fetch(:release_dir)} && docker-compose -f docker-compose.yml -f docker-compose.prod.yml -p #{fetch(:app_with_stage)} up -d"
|
|
85
86
|
end
|
|
86
87
|
end
|
|
87
88
|
end
|
|
@@ -90,8 +91,8 @@ namespace :docker do
|
|
|
90
91
|
task :stop do
|
|
91
92
|
on roles :app do
|
|
92
93
|
within fetch(:release_dir) do
|
|
93
|
-
execute "cd #{fetch(:release_dir)} && docker-compose -p #{fetch(:app_with_stage)} kill" # kill the running containers
|
|
94
|
-
execute "cd #{fetch(:release_dir)} && docker-compose -p #{fetch(:app_with_stage)} rm --force"
|
|
94
|
+
execute "cd #{fetch(:release_dir)} && docker-compose -f docker-compose.yml -f docker-compose.prod.yml -p #{fetch(:app_with_stage)} kill" # kill the running containers
|
|
95
|
+
execute "cd #{fetch(:release_dir)} && docker-compose -f docker-compose.yml -f docker-compose.prod.yml -p #{fetch(:app_with_stage)} rm --force"
|
|
95
96
|
end
|
|
96
97
|
end
|
|
97
98
|
end
|
|
@@ -6,8 +6,8 @@ module DockerHouston
|
|
|
6
6
|
class InstallGenerator < Rails::Generators::Base
|
|
7
7
|
|
|
8
8
|
argument :app_name, type: :string, default: Rails.application.class.parent_name.downcase
|
|
9
|
-
argument :app_domain, type: :string, default: "
|
|
10
|
-
argument :docker_host, type: :string, default: "
|
|
9
|
+
argument :app_domain, type: :string, default: "example.com"
|
|
10
|
+
argument :docker_host, type: :string, default: "example.com"
|
|
11
11
|
|
|
12
12
|
source_root File.expand_path("../../templates", __FILE__)
|
|
13
13
|
desc "Creates a docker configuration template files to your application."
|
|
@@ -16,8 +16,10 @@ module DockerHouston
|
|
|
16
16
|
copy_file "Dockerfile.erb", "Dockerfile"
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
def
|
|
20
|
-
|
|
19
|
+
def copy_docker_compose
|
|
20
|
+
copy_file "docker-compose.yml.erb", "docker-compose.yml"
|
|
21
|
+
copy_file "docker-compose.override.yml.erb", "docker-compose.override.yml"
|
|
22
|
+
template "docker-compose.prod.yml.erb", "docker-compose.prod.yml"
|
|
21
23
|
end
|
|
22
24
|
|
|
23
25
|
def copy_secret
|
|
@@ -25,15 +27,20 @@ module DockerHouston
|
|
|
25
27
|
end
|
|
26
28
|
|
|
27
29
|
def copy_database_file
|
|
28
|
-
template "database.yml.
|
|
30
|
+
template "database.yml.erb", "config/database.yml"
|
|
29
31
|
end
|
|
30
32
|
|
|
31
33
|
def copy_unicorn
|
|
32
34
|
copy_file "unicorn.rb", "config/unicorn.rb"
|
|
33
35
|
end
|
|
34
36
|
|
|
35
|
-
def
|
|
36
|
-
|
|
37
|
+
def copy_capistrano_env
|
|
38
|
+
environment = ask("Staging or production? [staging]")
|
|
39
|
+
if environment.blank? || environment == 'staging'
|
|
40
|
+
template 'staging.rb.erb', "config/deploy/staging.rb"
|
|
41
|
+
else
|
|
42
|
+
template 'production.rb.erb', "config/deploy/production.rb"
|
|
43
|
+
end
|
|
37
44
|
end
|
|
38
45
|
|
|
39
46
|
def copy_capistrano_deploy
|
|
@@ -1,53 +1,20 @@
|
|
|
1
1
|
FROM ruby:2.3.0
|
|
2
2
|
|
|
3
|
-
RUN apt-get update -y
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
build-essential git git-core \
|
|
7
|
-
zlib1g-dev libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev
|
|
8
|
-
|
|
9
|
-
RUN apt-get install -y software-properties-common
|
|
3
|
+
RUN apt-get update && apt-get install -y \
|
|
4
|
+
build-essential \
|
|
5
|
+
nodejs
|
|
10
6
|
|
|
11
7
|
RUN apt-get dist-upgrade -y
|
|
12
8
|
|
|
13
9
|
# Add options to gemrc
|
|
14
10
|
RUN echo "gem: --no-document" > ~/.gemrc
|
|
15
11
|
|
|
16
|
-
RUN gem install bundler
|
|
17
|
-
|
|
18
|
-
ENV BUNDLE_GEMFILE=/app/Gemfile
|
|
19
|
-
ENV BUNDLE_JOBS=2
|
|
20
|
-
ENV BUNDLE_PATH=/bundle
|
|
21
|
-
ENV BUNDLE_WITHOUT=development:test
|
|
22
|
-
|
|
23
|
-
WORKDIR /tmp
|
|
24
|
-
|
|
25
12
|
RUN mkdir /app
|
|
13
|
+
WORKDIR /app
|
|
26
14
|
|
|
27
|
-
|
|
28
|
-
RUN
|
|
29
|
-
|
|
30
|
-
RUN gem install backup -v 4.2.2 --no-ri --no-rdoc
|
|
31
|
-
RUN mkdir /backups
|
|
32
|
-
|
|
33
|
-
RUN rm /etc/default/rcS && touch /etc/default/rcS
|
|
34
|
-
RUN echo "UTC=no" >> /etc/default/rcS
|
|
35
|
-
RUN cp /etc/localtime /etc/localtime.bkp
|
|
36
|
-
RUN rm /etc/localtime
|
|
37
|
-
RUN ln -s /usr/share/zoneinfo/Pacific/Auckland /etc/localtime
|
|
38
|
-
|
|
39
|
-
# RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main' >> /etc/apt/sources.list
|
|
40
|
-
# RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
|
|
41
|
-
# RUN apt-get update
|
|
42
|
-
# RUN apt-get install -y postgresql-9.4
|
|
43
|
-
# RUN apt-get remove -y postgresql-client-9.3
|
|
44
|
-
# COPY . /app
|
|
15
|
+
ADD Gemfile Gemfile.lock ./
|
|
16
|
+
RUN gem install bundler && bundle install --jobs 20 --retry 5
|
|
45
17
|
|
|
46
|
-
|
|
47
|
-
ADD Gemfile /app/Gemfile
|
|
48
|
-
ADD Gemfile.lock /app/Gemfile.lock
|
|
49
|
-
RUN bundle install
|
|
50
|
-
ADD . /app
|
|
18
|
+
ADD . ./
|
|
51
19
|
|
|
52
|
-
|
|
53
|
-
RUN touch log/cron.stdout.log && touch log/cron.stderr.log
|
|
20
|
+
EXPOSE 3000
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
default: &default
|
|
2
2
|
adapter: postgresql
|
|
3
3
|
encoding: unicode
|
|
4
|
-
username: docker
|
|
5
|
-
password: docker
|
|
6
4
|
pool: 5
|
|
7
|
-
host:
|
|
5
|
+
host: db
|
|
8
6
|
|
|
9
7
|
development:
|
|
10
8
|
<<: *default
|
|
@@ -14,6 +12,10 @@ staging:
|
|
|
14
12
|
<<: *default
|
|
15
13
|
database: <%= app_name %>_staging
|
|
16
14
|
|
|
15
|
+
production:
|
|
16
|
+
<<: *default
|
|
17
|
+
database: <%= app_name %>_production
|
|
18
|
+
|
|
17
19
|
test:
|
|
18
20
|
<<: *default
|
|
19
21
|
database: <%= app_name %>_test
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
version: '2'
|
|
2
|
+
services:
|
|
3
|
+
db:
|
|
4
|
+
volumes:
|
|
5
|
+
- /home/deploy/db/data:/var/lib/postgresql/data
|
|
6
|
+
web:
|
|
7
|
+
volumes:
|
|
8
|
+
- /home/deploy/dockerised_apps/nginx-proxy/assets/<%= app_domain %>/public:/app/public/
|
|
9
|
+
- /home/deploy/dockerised_apps/logs/deploybot/:/app/log/
|
|
10
|
+
- /home/deploy/dockerised_apps/logs/deploybot/unicorn:/var/log/
|
|
11
|
+
env_file: ../../shared/.env
|
|
12
|
+
command: ./bin/docker
|
|
@@ -1,26 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
volumes:
|
|
13
|
-
- /home/deploy/dockerised_apps/nginx-proxy/assets/<%= app_domain %>/public:/app/public/
|
|
14
|
-
- /home/deploy/dockerised_apps/logs/<%= app_name %>/:/app/log/
|
|
15
|
-
- /home/deploy/dockerised_apps/logs/<%= app_name %>/unicorn:/var/log/
|
|
16
|
-
ports:
|
|
17
|
-
- "3000"
|
|
18
|
-
links:
|
|
19
|
-
- postgresql
|
|
20
|
-
environment: &web
|
|
21
|
-
RAILS_ENV: staging
|
|
22
|
-
SECRET_KEY_BASE: 43834f4b48946cb62b30130a4577cec2d0a842fcf97095706ccf0de7f293689336c1c0f84a55a26a689ca8ca21edd6da477a9ba9adce48176fe0b23e17f16fd4
|
|
23
|
-
VIRTUAL_HOST: <%= app_domain %>
|
|
24
|
-
<<: *postgres
|
|
25
|
-
# env_file: ../shared/.env
|
|
26
|
-
command: ./bin/docker
|
|
1
|
+
version: '2'
|
|
2
|
+
services:
|
|
3
|
+
db:
|
|
4
|
+
image: postgres
|
|
5
|
+
web:
|
|
6
|
+
build: .
|
|
7
|
+
ports:
|
|
8
|
+
- "3000:3000"
|
|
9
|
+
depends_on:
|
|
10
|
+
- db
|
|
11
|
+
command: bundle exec rails server -b 0.0.0.0 --pid /tmp/server.pid
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
role :web, "<%= @docker_host %>"
|
|
2
|
+
role :app, "<%= @docker_host %>"
|
|
3
|
+
|
|
4
|
+
set :app_name, "<%= @app_name %>"
|
|
5
|
+
|
|
6
|
+
set :rails_env, "production"
|
|
7
|
+
server "<%= @docker_host %>", user: 'deploy', roles: [:app, :install]
|
|
8
|
+
set :working_dir, "/home/deploy/dockerised_apps/#{fetch(:app_name)}/current"
|
|
9
|
+
set :deploy_to, "#{fetch(:working_dir).chomp('current')}"
|
|
10
|
+
set :release_dir, ->{Pathname.new("/home/deploy/dockerised_apps/#{fetch(:app_name)}/current")}
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: docker_houston
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- alex-zige
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2017-03-28 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: bundler
|
|
@@ -82,9 +82,12 @@ files:
|
|
|
82
82
|
- lib/generators/docker_houston/install_generator.rb
|
|
83
83
|
- lib/generators/templates/Capfile
|
|
84
84
|
- lib/generators/templates/Dockerfile.erb
|
|
85
|
-
- lib/generators/templates/database.yml.
|
|
85
|
+
- lib/generators/templates/database.yml.erb
|
|
86
86
|
- lib/generators/templates/deploy.rb.erb
|
|
87
|
+
- lib/generators/templates/docker-compose.override.yml.erb
|
|
88
|
+
- lib/generators/templates/docker-compose.prod.yml.erb
|
|
87
89
|
- lib/generators/templates/docker-compose.yml.erb
|
|
90
|
+
- lib/generators/templates/production.rb.erb
|
|
88
91
|
- lib/generators/templates/secrets.yml
|
|
89
92
|
- lib/generators/templates/staging.rb.erb
|
|
90
93
|
- lib/generators/templates/unicorn.rb
|
|
@@ -111,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
111
114
|
version: '0'
|
|
112
115
|
requirements: []
|
|
113
116
|
rubyforge_project:
|
|
114
|
-
rubygems_version: 2.5.
|
|
117
|
+
rubygems_version: 2.5.1
|
|
115
118
|
signing_key:
|
|
116
119
|
specification_version: 4
|
|
117
120
|
summary: Misson Control for docker builds.
|