dockerize-stack 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +13 -19
- data/bin/console +7 -0
- data/bin/dockerize-stack +2 -0
- data/lib/config.yml +51 -23
- data/lib/dockerize_stack.rb +25 -33
- data/lib/thor_extend.rb +49 -39
- data/lib/version.rb +3 -1
- data/templates/rails/Dockerfile.erb +19 -18
- data/templates/rails/config/database-docker.yml.erb +2 -2
- data/templates/rails/entrypoint.sh.erb +1 -1
- metadata +2 -5
- data/lib/dockerize_stack/rails.rb +0 -48
- data/lib/dockerize_stack/react.rb +0 -29
- data/templates/rails/dockerignore.erb +0 -20
- data/templates/react/dockerignore.erb +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b499b28348c817d3cb4684f8579183faf30a7b8262b95cb98c1b9a9535ecb3ee
|
4
|
+
data.tar.gz: 53f0fd0799c0db54c79844fe01c27f48b4b8e1ebd6a8058dd65fbaa9bbaa942a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '008333cf81fc7cd01a5b870ff29cea94ed9b3fe5cffd049861896f5fa435ebdf9e5622b0f9907bbf69b54e2ee721bf91db153c9f5b389e505355e0ddce0da93f'
|
7
|
+
data.tar.gz: fab9fbc02cd471508f0e0b00f7d1a890b2d4fcfba872299def2ffa1eec041f1cd847eed800c6a93a4f3b1c9bbd63afaeba9131d6c824a3143b7da68803fab871
|
data/README.md
CHANGED
@@ -1,16 +1,12 @@
|
|
1
1
|
# Dockerize Stack
|
2
2
|
|
3
|
-
This it's a generator for generate Dockerfile and docker-compose for your application
|
3
|
+
This it's a generator for generate Dockerfile and docker-compose for your application
|
4
4
|
|
5
5
|
## Why?
|
6
6
|
|
7
7
|
- Help to configure multiple applications using the same templates.
|
8
8
|
|
9
|
-
-
|
10
|
-
|
11
|
-
- For deploy to kubernetes you need first Dockerfile for your application, this templates help to build optimize docker image for productions enviroments.
|
12
|
-
|
13
|
-
- Using templates is more easy customize docker build process (Dockerfile, docker-compose).
|
9
|
+
- Using templates is more easy to dockerize diferent type of projects.
|
14
10
|
|
15
11
|
## Install
|
16
12
|
|
@@ -40,22 +36,20 @@ docker run --user $(id -u) -it -v $(pwd):/usr/src devmasx/dockerize-stack rails
|
|
40
36
|
|
41
37
|
[rails example](./examples/rails)
|
42
38
|
|
43
|
-
By default the Dockerfile config is for production enviroment; using docker multistage feature and ARG (Build arguments) at the build time this Dockerfile is the same for development and production.
|
44
|
-
|
45
39
|
See all options:
|
46
40
|
|
47
41
|
```
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
42
|
+
Options:
|
43
|
+
t, [--template-folder=TEMPLATE_FOLDER] # Template folder path
|
44
|
+
o, [--output-folder=OUTPUT_FOLDER] # Output folder
|
45
|
+
# Default: .
|
46
|
+
[--ruby-version=RUBY_VERSION] # Ruby Version (default 2.5.6):
|
47
|
+
[--nodejs-version=NODEJS_VERSION] # Nodejs version (default 10.16.3):
|
48
|
+
[--javascrit-package-manager=JAVASCRIT_PACKAGE_MANAGER] # What is your Javascript package manager?
|
49
|
+
[--database=DATABASE] # What is your Database?
|
50
|
+
[--rails-worker=RAILS_WORKER] # You need workers with sidekiq? y/n, (default y)
|
51
|
+
[--github-private=GITHUB_PRIVATE] # You need github token for private gems? y/n (default no)
|
52
|
+
[--kubernetes=KUBERNETES] # You want generate docker-stack for kubernetes? y/n (default no)
|
59
53
|
```
|
60
54
|
|
61
55
|
## TODO
|
data/bin/console
ADDED
data/bin/dockerize-stack
CHANGED
data/lib/config.yml
CHANGED
@@ -1,28 +1,56 @@
|
|
1
1
|
rails:
|
2
|
-
defaults:
|
3
|
-
ruby_version: "2.5.6"
|
4
|
-
nodejs_version: "10.16.3"
|
5
|
-
yarn_version: "1.17.3"
|
6
|
-
javascrit_package_manager:
|
7
|
-
- asset_pipeline
|
8
|
-
- yarn
|
9
|
-
- npm
|
10
|
-
database:
|
11
|
-
- postgresql
|
12
|
-
- mysql
|
13
|
-
rails_worker: true
|
14
|
-
github_private: false
|
15
|
-
kubernetes: false
|
16
2
|
questions:
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
3
|
+
- option: ruby_version
|
4
|
+
title: "Ruby Version (default 2.5.6):"
|
5
|
+
description: Ruby version
|
6
|
+
default: "2.5.6"
|
7
|
+
type: ask_with_default
|
8
|
+
|
9
|
+
- option: nodejs_version
|
10
|
+
title: "Nodejs version (default 10.16.3):"
|
11
|
+
default: "10.16.3"
|
12
|
+
type: with_default
|
13
|
+
|
14
|
+
- option: javascrit_package_manager
|
15
|
+
title: What is your Javascript package manager?
|
16
|
+
description: Select the package manager for Javascript modules
|
17
|
+
default: "yarn"
|
18
|
+
type: ask_with_options
|
19
|
+
ask_options:
|
20
|
+
- asset_pipeline
|
21
|
+
- yarn
|
22
|
+
- npm
|
23
|
+
|
24
|
+
- option: database
|
25
|
+
title: What is your Database?
|
26
|
+
description: Database type
|
27
|
+
default: "postgresql"
|
28
|
+
type: ask_with_options
|
29
|
+
ask_options:
|
30
|
+
- postgresql
|
31
|
+
- mysql
|
32
|
+
|
33
|
+
- option: rails_worker
|
34
|
+
title: You need workers with sidekiq? y/n, (default y)
|
35
|
+
description: Rails sidekiq examples in docker-compose.yml
|
36
|
+
default: "y"
|
37
|
+
type: ask_with_default_boolean
|
38
|
+
|
39
|
+
- option: github_private
|
40
|
+
title: You need github token for private gems? y/n (default no)
|
41
|
+
description: Set GITHUB_USERNAME and GITHUB_TOKEN in dockerfile bundle config
|
42
|
+
default: "y"
|
43
|
+
type: ask_with_default_boolean
|
44
|
+
|
45
|
+
- option: kubernetes
|
46
|
+
title: You want generate docker-stack for kubernetes? y/n (default no)
|
47
|
+
description: Basic examples for kubernetes config (minikube)
|
48
|
+
default: "n"
|
49
|
+
type: ask_with_default_boolean
|
23
50
|
|
24
51
|
react:
|
25
|
-
defaults:
|
26
|
-
nodejs_version: "10.16.3"
|
27
52
|
questions:
|
28
|
-
|
53
|
+
- option: nodejs_version
|
54
|
+
title: "Nodejs version (default 10.16.3):"
|
55
|
+
default: "10.16.3"
|
56
|
+
type: ask_with_default
|
data/lib/dockerize_stack.rb
CHANGED
@@ -1,13 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'thor'
|
2
4
|
require_relative './thor_extend.rb'
|
3
|
-
require_relative './dockerize_stack/react.rb'
|
4
|
-
require_relative './dockerize_stack/rails.rb'
|
5
5
|
|
6
6
|
module DockerizeStack
|
7
7
|
class Command < Thor
|
8
8
|
include Thor::Actions
|
9
9
|
include ThorActionsExtend
|
10
|
-
RAILS_CONFIG_DEFAULTS = CONFIG.dig(:rails, :defaults)
|
11
10
|
|
12
11
|
option :template_folder,
|
13
12
|
aliases: 't',
|
@@ -16,38 +15,26 @@ module DockerizeStack
|
|
16
15
|
default: '.',
|
17
16
|
aliases: 'o',
|
18
17
|
desc: 'Output folder'
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
enum: RAILS_CONFIG_DEFAULTS[:javascrit_package_manager]
|
25
|
-
option :nodejs_version,
|
26
|
-
banner: RAILS_CONFIG_DEFAULTS[:nodejs_version],
|
27
|
-
desc: 'Nodejs version'
|
28
|
-
option :yarn_version,
|
29
|
-
banner: RAILS_CONFIG_DEFAULTS[:yarn_version],
|
30
|
-
desc: 'Yarn version'
|
31
|
-
option :database,
|
32
|
-
banner: 'postgresql',
|
33
|
-
enum: RAILS_CONFIG_DEFAULTS[:database],
|
34
|
-
desc: 'Database type'
|
35
|
-
option :rails_worker,
|
36
|
-
type: :boolean,
|
37
|
-
banner: RAILS_CONFIG_DEFAULTS[:rails_worker],
|
38
|
-
desc: 'Rails sidekiq examples in docker-compose.yml'
|
39
|
-
option :github_private,
|
40
|
-
type: :boolean,
|
41
|
-
banner: RAILS_CONFIG_DEFAULTS[:github_private],
|
42
|
-
desc: 'Set GITHUB_USERNAME and GITHUB_TOKEN in dockerfile bundle config'
|
43
|
-
option :kubernetes,
|
44
|
-
type: :boolean,
|
45
|
-
banner: RAILS_CONFIG_DEFAULTS[:kubernetes],
|
46
|
-
desc: 'Basic examples for kubernetes config (minikube)'
|
18
|
+
|
19
|
+
CONFIG[:rails][:questions].each do |question|
|
20
|
+
option question[:option],
|
21
|
+
desc: question[:title]
|
22
|
+
end
|
47
23
|
|
48
24
|
desc 'rails', 'generate docker files for rails application'
|
49
25
|
def rails
|
50
|
-
|
26
|
+
run(options, :rails)
|
27
|
+
all_file_paths(:rails).each do |file_path|
|
28
|
+
if file_path =~ %r{./templates/rails/kubernetes} && !@kubernetes
|
29
|
+
return false
|
30
|
+
end
|
31
|
+
|
32
|
+
file_name = file_path.gsub('/templates/rails', '')
|
33
|
+
template file_name, "#{@output_folder}/#{file_name.gsub('.erb', '')}"
|
34
|
+
end
|
35
|
+
render_template! '.dockerignore.erb'
|
36
|
+
|
37
|
+
puts 'Update your database.yml based in database-docker.yml'
|
51
38
|
end
|
52
39
|
|
53
40
|
option :template_folder, aliases: 't', desc: 'Template folder path'
|
@@ -56,7 +43,12 @@ module DockerizeStack
|
|
56
43
|
|
57
44
|
desc 'react', 'generate docker files for create react app'
|
58
45
|
def react
|
59
|
-
|
46
|
+
run(options, :react)
|
47
|
+
all_file_paths(:react).each do |file_path|
|
48
|
+
file_name = file_path.gsub('/templates/react', '')
|
49
|
+
template file_name, "#{@output_folder}/#{file_name.gsub('.erb', '')}"
|
50
|
+
end
|
51
|
+
render_template! '.dockerignore.erb'
|
60
52
|
end
|
61
53
|
end
|
62
54
|
end
|
data/lib/thor_extend.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'yaml'
|
2
4
|
require 'json'
|
3
5
|
|
@@ -5,59 +7,67 @@ module ThorActionsExtend
|
|
5
7
|
include Thor::Actions
|
6
8
|
|
7
9
|
CONFIG = JSON.parse(
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
10
|
+
JSON.dump(YAML.load_file("#{File.dirname(__FILE__)}/config.yml")),
|
11
|
+
symbolize_names: true
|
12
|
+
)
|
13
|
+
|
14
|
+
def run(options, template_type)
|
12
15
|
@template_type = template_type
|
13
16
|
@options = options
|
17
|
+
@output_folder = options['output_folder']
|
14
18
|
@config = CONFIG[@template_type]
|
15
|
-
self.class.source_root(template_folder
|
19
|
+
self.class.source_root(template_folder)
|
16
20
|
|
17
21
|
fetch_template_variables
|
18
|
-
render_templates
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def template_folder(template_type)
|
24
|
-
@options[:template_folder] || "#{File.dirname(__FILE__)}/../templates/#{template_type}"
|
25
|
-
end
|
26
|
-
|
27
|
-
def render_template(path, target_path = path)
|
28
|
-
template path, "#{@output_folder}/#{target_path.gsub('.erb', '')}"
|
29
22
|
end
|
30
23
|
|
31
|
-
def
|
32
|
-
|
33
|
-
|
34
|
-
|
24
|
+
def fetch_template_variables
|
25
|
+
@config[:questions].each do |question|
|
26
|
+
default = question[:default]
|
27
|
+
option = question[:option]
|
28
|
+
title = question[:title]
|
29
|
+
type = question[:type]
|
30
|
+
|
31
|
+
if @options[option] || @options[option] == false
|
32
|
+
instance_variable_set("@#{option}", @options[option])
|
33
|
+
next
|
34
|
+
end
|
35
|
+
|
36
|
+
case type
|
37
|
+
when 'with_default'
|
38
|
+
instance_variable_set("@#{option}", default)
|
39
|
+
when 'ask_with_default'
|
40
|
+
result = ask(title)
|
41
|
+
result == '' ? default : result
|
42
|
+
|
43
|
+
instance_variable_set("@#{option}", result)
|
44
|
+
when 'ask_with_default_boolean'
|
45
|
+
result = ask(title)
|
46
|
+
result = default if result == ''
|
47
|
+
result = %w[yes y true].include?(result) ? true : false
|
48
|
+
|
49
|
+
instance_variable_set("@#{option}", result)
|
50
|
+
when 'ask_with_options'
|
51
|
+
instance_variable_set("@#{option}", ask(title, limited_to: question[:ask_options]))
|
52
|
+
else
|
53
|
+
raise "Invalid question type: #{type}"
|
54
|
+
end
|
55
|
+
end
|
35
56
|
end
|
36
57
|
|
37
|
-
|
38
|
-
return @options[option] unless @options[option].nil?
|
39
|
-
|
40
|
-
default = @config[:defaults][option] if default.nil?
|
41
|
-
result = ask(@config[:questions][option])
|
58
|
+
private
|
42
59
|
|
43
|
-
|
60
|
+
def render_template!(template_file)
|
61
|
+
result = ERB.new(File.read("#{template_folder}/#{template_file}")).result(binding)
|
62
|
+
File.write("#{@output_folder}/#{template_file.gsub('.erb', '')}", result)
|
44
63
|
end
|
45
64
|
|
46
|
-
def
|
47
|
-
|
48
|
-
|
49
|
-
limited_to = @config[:defaults][option] if limited_to.nil?
|
50
|
-
ask(@config[:questions][option], limited_to: limited_to)
|
65
|
+
def all_file_paths(type)
|
66
|
+
Dir.glob("./templates/#{type}/**/*").reject { |x| File.directory?(x) }
|
51
67
|
end
|
52
68
|
|
53
|
-
def
|
54
|
-
|
55
|
-
|
56
|
-
result = ask(@config[:questions][option])
|
57
|
-
default = @config[:defaults][option] if default.nil?
|
58
|
-
return default if result == ''
|
59
|
-
|
60
|
-
%w[yes y true].include?(result) ? true : false
|
69
|
+
def template_folder
|
70
|
+
@options[:template_folder] || "#{File.dirname(__FILE__)}/../templates/#{@template_type}"
|
61
71
|
end
|
62
72
|
|
63
73
|
def append_or_create(file_path, file_content)
|
data/lib/version.rb
CHANGED
@@ -1,30 +1,30 @@
|
|
1
1
|
# ****************************
|
2
2
|
# ******Build base stage******
|
3
3
|
# ****************************
|
4
|
-
<% if javascrit_package_manager != "asset_pipeline" %>
|
5
|
-
FROM node:<%= nodejs_version %>-slim as nodejs
|
4
|
+
<% if @javascrit_package_manager != "asset_pipeline" %>
|
5
|
+
FROM node:<%= @nodejs_version %>-slim as nodejs
|
6
6
|
<% end %>
|
7
|
-
FROM ruby:<%= ruby_version %>-slim as builder
|
7
|
+
FROM ruby:<%= @ruby_version %>-slim as builder
|
8
8
|
|
9
9
|
# Install common libs
|
10
10
|
RUN apt-get update -qq && apt-get install -y \
|
11
11
|
build-essential vim git
|
12
|
-
<% if database == "mysql" %>
|
12
|
+
<% if @database == "mysql" %>
|
13
13
|
# Install Mysql
|
14
14
|
RUN apt-get install -y mysql-client libmysqlclient-dev
|
15
|
-
<% elsif database == "postgresql" %>
|
15
|
+
<% elsif @database == "postgresql" %>
|
16
16
|
# Install Postgresql
|
17
17
|
RUN apt-get install -y postgresql-client libpq-dev
|
18
18
|
<% end %>
|
19
|
-
# Install Nodejs<% if javascrit_package_manager == "asset_pipeline" %>
|
19
|
+
# Install Nodejs<% if @javascrit_package_manager == "asset_pipeline" %>
|
20
20
|
RUN apt-get install -y nodejs npm
|
21
|
-
<% elsif javascrit_package_manager == "yarn" %>
|
22
|
-
ENV NODE_VERSION=<%= nodejs_version %> YARN_VERSION=<%= yarn_version %>
|
21
|
+
<% elsif @javascrit_package_manager == "yarn" %>
|
22
|
+
ENV NODE_VERSION=<%= @nodejs_version %> YARN_VERSION=<%= @yarn_version %>
|
23
23
|
COPY --from=nodejs /usr/local/bin/ /usr/local/bin/
|
24
24
|
COPY --from=nodejs /usr/local/lib/ /usr/local/lib/
|
25
|
-
COPY --from=nodejs /opt/yarn-v<%= yarn_version %>/ /opt/yarn-v<%= yarn_version %>/
|
26
|
-
<% elsif javascrit_package_manager == "npm" %>
|
27
|
-
ENV NODE_VERSION=<%= nodejs_version %>
|
25
|
+
COPY --from=nodejs /opt/yarn-v<%= @yarn_version %>/ /opt/yarn-v<%= @yarn_version %>/
|
26
|
+
<% elsif @javascrit_package_manager == "npm" %>
|
27
|
+
ENV NODE_VERSION=<%= @nodejs_version %>
|
28
28
|
COPY --from=nodejs /usr/local/bin/ /usr/local/bin/
|
29
29
|
COPY --from=nodejs /usr/local/lib/ /usr/local/lib/
|
30
30
|
<% end %>
|
@@ -46,15 +46,15 @@ ENV NODE_ENV=$NODE_ENV
|
|
46
46
|
# Gems cache layer
|
47
47
|
COPY Gemfile Gemfile.lock /app/
|
48
48
|
RUN bundle install -j 4
|
49
|
-
<% if javascrit_package_manager == "yarn" %>
|
49
|
+
<% if @javascrit_package_manager == "yarn" %>
|
50
50
|
# Node modules cache layer
|
51
51
|
COPY package.json yarn.lock /app/
|
52
52
|
RUN yarn install --pure-lockfile
|
53
|
-
<% elsif javascrit_package_manager == "npm" %>
|
53
|
+
<% elsif @javascrit_package_manager == "npm" %>
|
54
54
|
# Node modules cache layer
|
55
55
|
COPY package.json package-lock.json /app/
|
56
56
|
RUN npm ci
|
57
|
-
<% elsif javascrit_package_manager == "asset_pipeline" %>
|
57
|
+
<% elsif @javascrit_package_manager == "asset_pipeline" %>
|
58
58
|
<% end %>
|
59
59
|
COPY . .
|
60
60
|
CMD "./entrypoint.sh"
|
@@ -64,24 +64,25 @@ CMD "./entrypoint.sh"
|
|
64
64
|
# ****************************
|
65
65
|
|
66
66
|
FROM builder as production-builder
|
67
|
+
ENV NODE_ENV=production RAILS_ENV=production
|
67
68
|
|
68
69
|
# Build production assets
|
69
70
|
RUN bundle exec rails assets:precompile
|
70
|
-
<% if javascrit_package_manager != "asset_pipeline" %>
|
71
|
+
<% if @javascrit_package_manager != "asset_pipeline" %>
|
71
72
|
RUN rm -r node_modules
|
72
73
|
<% end %>
|
73
74
|
# **********************************
|
74
75
|
# ******Final production Stage******
|
75
76
|
# **********************************
|
76
77
|
|
77
|
-
FROM ruby:<%= ruby_version %>-slim
|
78
|
+
FROM ruby:<%= @ruby_version %>-slim
|
78
79
|
|
79
80
|
ENV NODE_ENV=production RAILS_ENV=production RAILS_LOG_TO_STDOUT=true
|
80
81
|
|
81
82
|
# Install system dependencies
|
82
|
-
<% if javascrit_package_manager != "asset_pipeline" %>
|
83
|
+
<% if @javascrit_package_manager != "asset_pipeline" %>
|
83
84
|
COPY --from=nodejs /usr/local/ /usr/local/
|
84
|
-
<% end %><% if javascrit_package_manager == "asset_pipeline" %>
|
85
|
+
<% end %><% if @javascrit_package_manager == "asset_pipeline" %>
|
85
86
|
RUN apt-get update -qq && apt-get install -y \
|
86
87
|
libpq-dev \
|
87
88
|
nodejs \
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# Update your database.yml based in database-docker.yml
|
2
2
|
|
3
|
-
<% if database == "postgresql" %>
|
3
|
+
<% if @database == "postgresql" %>
|
4
4
|
# Install the pg driver:
|
5
5
|
# gem install pg
|
6
6
|
|
@@ -14,7 +14,7 @@ default: &default
|
|
14
14
|
password: <%%= ENV.fetch("DATABASE_PASSWORD") { "" } %>
|
15
15
|
pool: <%%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
|
16
16
|
|
17
|
-
<% elsif database == "mysql" %>
|
17
|
+
<% elsif @database == "mysql" %>
|
18
18
|
# Install the MySQL driver
|
19
19
|
# gem install mysql2
|
20
20
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
bundle check || bundle install
|
2
2
|
rake db:create db:migrate
|
3
3
|
rm -f tmp/pids/server.pid
|
4
|
-
<% if javascrit_package_manager == "asset_pipeline" %>
|
4
|
+
<% if @javascrit_package_manager == "asset_pipeline" %>
|
5
5
|
rm -rf public/packs/* || true && bin/webpack-dev-server &
|
6
6
|
<% end %>
|
7
7
|
bundle exec rails server -p 3000 -b 0.0.0.0
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dockerize-stack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Savignano
|
@@ -33,17 +33,15 @@ extra_rdoc_files: []
|
|
33
33
|
files:
|
34
34
|
- LICENSE
|
35
35
|
- README.md
|
36
|
+
- bin/console
|
36
37
|
- bin/dockerize-stack
|
37
38
|
- lib/config.yml
|
38
39
|
- lib/dockerize_stack.rb
|
39
|
-
- lib/dockerize_stack/rails.rb
|
40
|
-
- lib/dockerize_stack/react.rb
|
41
40
|
- lib/thor_extend.rb
|
42
41
|
- lib/version.rb
|
43
42
|
- templates/rails/Dockerfile.erb
|
44
43
|
- templates/rails/config/database-docker.yml.erb
|
45
44
|
- templates/rails/docker-compose.yml.erb
|
46
|
-
- templates/rails/dockerignore.erb
|
47
45
|
- templates/rails/entrypoint.sh.erb
|
48
46
|
- templates/rails/kubernetes/scripts/deploy.sh
|
49
47
|
- templates/rails/kubernetes/scripts/get-secrets.sh
|
@@ -61,7 +59,6 @@ files:
|
|
61
59
|
- templates/rails/nginx/etc/nginx/conf.d/default.conf
|
62
60
|
- templates/rails/nginx/etc/nginx/nginx.conf
|
63
61
|
- templates/react/Dockerfile.erb
|
64
|
-
- templates/react/dockerignore.erb
|
65
62
|
- templates/react/nginx/conf.d/default.conf.template
|
66
63
|
homepage: https://github.com/MiguelSavignano/dockerize-stack
|
67
64
|
licenses:
|
@@ -1,48 +0,0 @@
|
|
1
|
-
module DockerizeStack
|
2
|
-
# Ask variables and render templates
|
3
|
-
class Rails < Thor
|
4
|
-
include Thor::Actions
|
5
|
-
include ThorActionsExtend
|
6
|
-
|
7
|
-
attr_accessor :ruby_version, :javascrit_package_manager, :nodejs_version,
|
8
|
-
:yarn_version, :database, :github_private, :kubernetes, :output_folder
|
9
|
-
|
10
|
-
no_commands do
|
11
|
-
def template_type
|
12
|
-
:rails
|
13
|
-
end
|
14
|
-
|
15
|
-
def run(options)
|
16
|
-
super(options)
|
17
|
-
render_kubernetes_templates if @kubernetes
|
18
|
-
end
|
19
|
-
|
20
|
-
def fetch_template_variables
|
21
|
-
@output_folder = with_default(:output_folder)
|
22
|
-
@nodejs_version = with_default(:nodejs_version)
|
23
|
-
@yarn_version = with_default(:yarn_version)
|
24
|
-
|
25
|
-
@ruby_version = ask_with_default(:ruby_version)
|
26
|
-
@javascrit_package_manager = ask_with_options(:javascrit_package_manager)
|
27
|
-
@database = ask_with_options(:database)
|
28
|
-
@rails_worker = ask_with_default_boolean(:rails_worker)
|
29
|
-
@github_private = ask_with_default_boolean(:github_private)
|
30
|
-
@kubernetes = ask_with_default_boolean(:kubernetes)
|
31
|
-
end
|
32
|
-
|
33
|
-
def render_templates
|
34
|
-
render_template 'Dockerfile.erb'
|
35
|
-
render_template 'entrypoint.sh.erb'
|
36
|
-
render_template 'docker-compose.yml.erb'
|
37
|
-
render_template 'config/database-docker.yml.erb'
|
38
|
-
render_template 'dockerignore.erb', '.dockerignore'
|
39
|
-
|
40
|
-
puts 'Update your database.yml based in database-docker.yml'
|
41
|
-
end
|
42
|
-
|
43
|
-
def render_kubernetes_templates
|
44
|
-
directory 'kubernetes', "#{@output_folder}/kubernetes"
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'thor'
|
2
|
-
# Ask variables and render templates
|
3
|
-
module DockerizeStack
|
4
|
-
# Ask variables and render templates
|
5
|
-
class React < Thor
|
6
|
-
include Thor::Actions
|
7
|
-
include ThorActionsExtend
|
8
|
-
|
9
|
-
attr_accessor :nodejs_version, :output_folder
|
10
|
-
|
11
|
-
no_commands do
|
12
|
-
def template_type
|
13
|
-
:react
|
14
|
-
end
|
15
|
-
|
16
|
-
def fetch_template_variables
|
17
|
-
@output_folder = with_default(:output_folder)
|
18
|
-
@nodejs_version = ask_with_default(:nodejs_version)
|
19
|
-
end
|
20
|
-
|
21
|
-
def render_templates
|
22
|
-
render_template 'Dockerfile.erb'
|
23
|
-
render_template 'dockerignore.erb', '.dockerignore'
|
24
|
-
|
25
|
-
directory 'nginx', "#{@output_folder}/nginx"
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# Ignore all files from .gitignore
|
2
|
-
# echo .git > .dockerignore && cat .gitignore >> .dockerignore
|
3
|
-
|
4
|
-
/log/*
|
5
|
-
/tmp/*
|
6
|
-
|
7
|
-
.byebug_history
|
8
|
-
|
9
|
-
volumes
|
10
|
-
|
11
|
-
|
12
|
-
public/packs
|
13
|
-
public/packs-test
|
14
|
-
public/uploads
|
15
|
-
|
16
|
-
node_modules
|
17
|
-
coverage
|
18
|
-
yarn-error.log
|
19
|
-
.DS_Store
|
20
|
-
.git
|
@@ -1,27 +0,0 @@
|
|
1
|
-
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
2
|
-
# echo .git > .dockerignore && cat .gitignore >> .dockerignore
|
3
|
-
|
4
|
-
.git
|
5
|
-
Dockerfile
|
6
|
-
|
7
|
-
# dependencies
|
8
|
-
/node_modules
|
9
|
-
/.pnp
|
10
|
-
.pnp.js
|
11
|
-
|
12
|
-
# testing
|
13
|
-
/coverage
|
14
|
-
|
15
|
-
# production
|
16
|
-
/build
|
17
|
-
|
18
|
-
# misc
|
19
|
-
.DS_Store
|
20
|
-
.env.local
|
21
|
-
.env.development.local
|
22
|
-
.env.test.local
|
23
|
-
.env.production.local
|
24
|
-
|
25
|
-
npm-debug.log*
|
26
|
-
yarn-debug.log*
|
27
|
-
yarn-error.log*
|