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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8385fd21082fdd57412381955b2c3656e09eb393
4
- data.tar.gz: 6c061aeb84b85f3ce4ccb8f4e450edeeeffca141
3
+ metadata.gz: b31e55cc510552a411c10015a01b4018a8f454ec
4
+ data.tar.gz: 656916f767d3b046b97fbb2ec974d2d58c56272b
5
5
  SHA512:
6
- metadata.gz: ebaa7a377aef0880deeafa8bab9deec70516c537a8bf11b4dd78683fbfdc9bdd69d68c6bee2c7ed3170c37757b9854b412c64422a39af7fe65214ca5fae7d935
7
- data.tar.gz: 287926ec8a900b78eba0e4c34e691bb9f26670826d2f4434b6f1fb840ab1877ae3c3201c5363f7eef869e72d7e28ed66549c1e7feba8676ade40c425048d2f4c
6
+ metadata.gz: 26b89983f5b668b2add7bf263a8dd2d4de678b83ba5905b49c2a2191179c45aa1d0e3ee425a80e34b6b54bf91b372ff42b5ad20ed76d01603aea6e2120b5f444
7
+ data.tar.gz: c9ed3230605b38187ea0c3133f6fd7806eca8ca14375e07f2ddae44b1f16ac3e304a303ccd089f2a761f5ebe91d747a1a802e3c6f20831e648ac35dbcc384c89
data/.gitignore CHANGED
@@ -7,3 +7,5 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+
11
+ *.gem
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: the app name for your project.
52
+ `APP_NAME`: the app name for your project.
53
53
 
54
- APP_DOMAIN: the virtual url for the app.
54
+ `APP_DOMAIN`: the virtual url for the app.
55
55
 
56
- DOCKER_HOST: the remote host for docker instance.
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:setup_db'
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 'relink docker database'
62
- task :setup_db do
61
+ desc 'Setup Environment file'
62
+ task :setup_env do
63
63
  on roles :app do
64
- docker_db = "#{fetch(:release_dir)}/config/database.yml.docker"
65
- if test "[ -f #{docker_db} ]"
66
- execute :cp, "#{docker_db} #{docker_db.chomp('.docker')}"
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
@@ -1,3 +1,3 @@
1
1
  module DockerHouston
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.7"
3
3
  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: "YOUR-APP-HOST-NAME"
10
- argument :docker_host, type: :string, default: "YOUR-DOCKER_HOST"
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 copy_docker_compse
20
- template "docker-compose.yml.erb", "docker-compose.yml"
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.docker.erb", "config/database.yml.docker"
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 copy_capistrano_staging
36
- template 'staging.rb.erb', "config/deploy/staging.rb"
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
- RUN apt-get install -y wget curl \
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
- RUN mkdir /app/.bundle
28
- RUN echo 'BUNDLE_WITHOUT: development:test' > /app/.bundle/config
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
- WORKDIR /app
47
- ADD Gemfile /app/Gemfile
48
- ADD Gemfile.lock /app/Gemfile.lock
49
- RUN bundle install
50
- ADD . /app
18
+ ADD . ./
51
19
 
52
- RUN mkdir -p log
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: postgresql
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
@@ -1,5 +1,5 @@
1
1
  # config valid only for current version of Capistrano
2
- lock '3.4.0'
2
+ lock '3.8.0'
3
3
 
4
4
  set :branch, fetch(:branch, 'master')
5
5
  set :application, "<%= app_name %>"
@@ -0,0 +1,9 @@
1
+ version: '2'
2
+ services:
3
+ db:
4
+ volumes:
5
+ - ./db/data:/var/lib/postgresql/data
6
+ web:
7
+ volumes:
8
+ - .:/app
9
+ env_file: .env
@@ -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
- postgresql:
2
- image: postgres
3
- ports:
4
- - 5432
5
- volumes:
6
- - /home/deploy/db/data:/var/lib/postgresql/data
7
- environment: &postgres
8
- POSTGRES_USER: docker
9
- POSTGRES_PASSWORD: docker
10
- web:
11
- build: .
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.5
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: 2016-06-23 00:00:00.000000000 Z
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.docker.erb
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.0
117
+ rubygems_version: 2.5.1
115
118
  signing_key:
116
119
  specification_version: 4
117
120
  summary: Misson Control for docker builds.