dockerize-stack 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +47 -0
- data/bin/dockerize-stack +4 -0
- data/lib/dockerize_stack.rb +13 -0
- data/lib/rails/dockerize_rails.rb +26 -0
- data/lib/rails/templates/Dockerfile.erb +41 -0
- data/lib/rails/templates/database-docker.yml.erb +37 -0
- data/lib/rails/templates/docker-compose.yml.erb +54 -0
- data/lib/rails/templates/dockerignore +1 -0
- data/lib/rails/templates/entrypoint.sh +5 -0
- data/lib/version.rb +3 -0
- metadata +69 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6fe3c267866bf6ef154ed068f13122eac6c8d1a3
|
4
|
+
data.tar.gz: 49a3e2a970cfb3536e8d5753f7a60d29aaf1b742
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d9161a682f081a93f3c83506952aead0fd1db2104ccb599659c1796b188cec223ea451ab2c65a0db32a60a7ee454917d4791772df21b5ddb93501aa022a6c312
|
7
|
+
data.tar.gz: 46e895bbb3787b1ce50d227e6668feecb9b31252361f49bc2e64f9f9c3fbe1c921211991e88f0a6f83d56bc49578b6c1689def235f955b40f323aa5e5822e607
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2018 Miguel Savignano
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
# Dockerize Stack for development
|
2
|
+
|
3
|
+
This it's a generator for generate Dockerfile and docker-compose for your application in development
|
4
|
+
|
5
|
+
## Why?
|
6
|
+
For build a quick stack for your development enviroment docker is the best tool you can use, but you need to configure the Dockerfile docker-compose, persisted database data, set the entrypoint...
|
7
|
+
|
8
|
+
This generator help you to have a basic template for your stack; focusing on develepment enviroment.
|
9
|
+
|
10
|
+
## Install
|
11
|
+
```
|
12
|
+
gem install dockerize-stack
|
13
|
+
```
|
14
|
+
|
15
|
+
## Stacks available
|
16
|
+
|
17
|
+
- [x] Rails 5.1 (Ruby)
|
18
|
+
- [ ] Symfony (PHP)
|
19
|
+
- [ ] Phoenixframework (Elixir)
|
20
|
+
- [ ] Django (Python)
|
21
|
+
- [ ] Express (Node)
|
22
|
+
|
23
|
+
## Usage
|
24
|
+
```sh
|
25
|
+
dockerize_stack rails
|
26
|
+
```
|
27
|
+
|
28
|
+
This script ask you:
|
29
|
+
- Ruby version
|
30
|
+
- Database type
|
31
|
+
|
32
|
+
example files generate:
|
33
|
+
```
|
34
|
+
/docker
|
35
|
+
--development
|
36
|
+
----Dockerfile
|
37
|
+
----entrypoint.sh
|
38
|
+
/.dockerignore
|
39
|
+
/docker-compose.yml
|
40
|
+
/config/database_docker.yml
|
41
|
+
```
|
42
|
+
|
43
|
+
## TODO
|
44
|
+
- [ ] Add phoenix generator
|
45
|
+
- [ ] Solve use rails generator in container
|
46
|
+
- [ ] Add integrations with all database types rails new supported ([mysql/postgresql/sqlite3/oracle/frontbase/ibm_db/sqlserver/jdbcmysql/jdbcsqlite3/jdbcpostgresql/jdbc])
|
47
|
+
- [ ] Integrate Build with private repository in the generator
|
data/bin/dockerize-stack
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'rails/dockerize_rails'
|
3
|
+
|
4
|
+
module DockerizeStack
|
5
|
+
class Command < Thor
|
6
|
+
include Thor::Actions
|
7
|
+
|
8
|
+
desc 'rails', 'generate docker files for rails application'
|
9
|
+
def rails
|
10
|
+
DockerizeRails.new.generate_files
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'thor'
|
2
|
+
|
3
|
+
class DockerizeRails < Thor
|
4
|
+
include Thor::Actions
|
5
|
+
attr_accessor :ruby_version, :database
|
6
|
+
|
7
|
+
def self.source_root
|
8
|
+
File.dirname(__FILE__)
|
9
|
+
end
|
10
|
+
|
11
|
+
desc 'generate_files', 'generate docker files for rails application'
|
12
|
+
def generate_files
|
13
|
+
@ruby_version = ask("Ruby Version (default 2.4.3):")
|
14
|
+
@ruby_version = "2.4.3" if @ruby_version == ""
|
15
|
+
@database = ask("What is your Database?", limited_to: ["mysql", "postgresql"])
|
16
|
+
|
17
|
+
template "templates/Dockerfile.erb", "docker/development/Dockerfile"
|
18
|
+
template "templates/entrypoint.sh", "docker/development/entrypoint.sh"
|
19
|
+
template "templates/docker-compose.yml.erb", "docker-compose.yml"
|
20
|
+
template "templates/database-docker.yml.erb", "config/database-docker.yml"
|
21
|
+
template "templates/dockerignore", ".dockerignore"
|
22
|
+
append_to_file '.gitignore', "
|
23
|
+
volumes"
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
FROM ruby:<%= ruby_version %>
|
2
|
+
|
3
|
+
# install common dev libs
|
4
|
+
RUN apt-get update -qq && apt-get install -y \
|
5
|
+
build-essential \
|
6
|
+
libpq-dev \
|
7
|
+
git-all
|
8
|
+
|
9
|
+
# install editors
|
10
|
+
RUN apt-get install -y \
|
11
|
+
nano \
|
12
|
+
vim
|
13
|
+
|
14
|
+
# http libs for download
|
15
|
+
RUN apt-get install -y \
|
16
|
+
curl \
|
17
|
+
ca-certificates \
|
18
|
+
openssl \
|
19
|
+
apt-transport-https \
|
20
|
+
gnupg2
|
21
|
+
|
22
|
+
<% if database == "mysql" %>
|
23
|
+
# install mysql
|
24
|
+
RUN apt-get install -y mysql-client libmysqlclient-dev
|
25
|
+
<% elsif database == "postgresql" %>
|
26
|
+
# install postgresql
|
27
|
+
RUN apt-get install -y postgresql-client
|
28
|
+
<% end %>
|
29
|
+
|
30
|
+
# install node 8.9.1 LTS
|
31
|
+
RUN curl -sL https://deb.nodesource.com/setup_8.x | bin/bash -
|
32
|
+
RUN apt-get update && apt-get install -y nodejs
|
33
|
+
|
34
|
+
# install yarn
|
35
|
+
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
|
36
|
+
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
|
37
|
+
RUN apt-get update && apt-get install yarn
|
38
|
+
|
39
|
+
RUN mkdir /app
|
40
|
+
WORKDIR /app
|
41
|
+
ADD . /app
|
@@ -0,0 +1,37 @@
|
|
1
|
+
|
2
|
+
<% if database == "postgresql" %>
|
3
|
+
# Install the pg driver:
|
4
|
+
# gem install pg
|
5
|
+
|
6
|
+
default: &default
|
7
|
+
adapter: postgresql
|
8
|
+
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
|
9
|
+
encoding: utf8
|
10
|
+
host: db
|
11
|
+
username: postgres
|
12
|
+
password:
|
13
|
+
|
14
|
+
<% elsif database == "mysql" %>
|
15
|
+
# Install the MySQL driver
|
16
|
+
# gem install mysql2
|
17
|
+
|
18
|
+
default: &default
|
19
|
+
adapter: mysql2
|
20
|
+
encoding: utf8
|
21
|
+
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
|
22
|
+
host: db
|
23
|
+
username: root
|
24
|
+
password: password
|
25
|
+
|
26
|
+
<% end %>
|
27
|
+
development:
|
28
|
+
<<: *default
|
29
|
+
database: myapp_development
|
30
|
+
|
31
|
+
test:
|
32
|
+
<<: *default
|
33
|
+
database: myapp_test
|
34
|
+
|
35
|
+
production:
|
36
|
+
<<: *default
|
37
|
+
database: myapp_production
|
@@ -0,0 +1,54 @@
|
|
1
|
+
version: '3'
|
2
|
+
services:
|
3
|
+
web:
|
4
|
+
build: ./docker/development
|
5
|
+
container_name: web
|
6
|
+
stdin_open: true
|
7
|
+
tty: true
|
8
|
+
command: "bash ./docker/development/entrypoint.sh"
|
9
|
+
volumes:
|
10
|
+
- .:/app
|
11
|
+
- ./volumes/bundle:/usr/local/bundle
|
12
|
+
ports:
|
13
|
+
- "3000:3000"
|
14
|
+
depends_on:
|
15
|
+
- db
|
16
|
+
# env_file:
|
17
|
+
# - web.env
|
18
|
+
<% if database == "mysql" %>
|
19
|
+
db:
|
20
|
+
image: 'mysql:5.7'
|
21
|
+
# ports:
|
22
|
+
# - "3306:3306"
|
23
|
+
environment:
|
24
|
+
MYSQL_ROOT_PASSWORD: password
|
25
|
+
volumes:
|
26
|
+
- ./volumes/mysql:/var/lib/mysql
|
27
|
+
<% elsif database == "postgresql" %>
|
28
|
+
db:
|
29
|
+
image: postgres:9.5.9
|
30
|
+
# ports:
|
31
|
+
# - "5432:5432"
|
32
|
+
volumes:
|
33
|
+
- ./volumes/postgresql:/var/lib/postgresql/data
|
34
|
+
<% end %>
|
35
|
+
redis:
|
36
|
+
image: redis
|
37
|
+
# ports:
|
38
|
+
# - "6379:6379"
|
39
|
+
mailcatcher:
|
40
|
+
image: schickling/mailcatcher
|
41
|
+
ports:
|
42
|
+
- 1025:1025
|
43
|
+
- 1080:1080
|
44
|
+
|
45
|
+
# USAGE
|
46
|
+
|
47
|
+
# execute a container for run rails console or rake tasks
|
48
|
+
# docker-compose run web bash
|
49
|
+
|
50
|
+
# attach the container when use binding.pry
|
51
|
+
# docker attach web
|
52
|
+
|
53
|
+
# when run rails generator you need to run
|
54
|
+
# sudo chown -R $USER:$USER $(ls | grep -v volumes)
|
@@ -0,0 +1 @@
|
|
1
|
+
volumes
|
data/lib/version.rb
ADDED
metadata
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dockerize-stack
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Miguel Savignano
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-02-03 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: thor
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
description: Generate Dockerfile and docker-compose for your application
|
28
|
+
email: migue.masx@gmail.com
|
29
|
+
executables:
|
30
|
+
- dockerize-stack
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- LICENSE
|
35
|
+
- README.md
|
36
|
+
- bin/dockerize-stack
|
37
|
+
- lib/dockerize_stack.rb
|
38
|
+
- lib/rails/dockerize_rails.rb
|
39
|
+
- lib/rails/templates/Dockerfile.erb
|
40
|
+
- lib/rails/templates/database-docker.yml.erb
|
41
|
+
- lib/rails/templates/docker-compose.yml.erb
|
42
|
+
- lib/rails/templates/dockerignore
|
43
|
+
- lib/rails/templates/entrypoint.sh
|
44
|
+
- lib/version.rb
|
45
|
+
homepage: https://github.com/MiguelSavignano/dockerize-stack
|
46
|
+
licenses:
|
47
|
+
- MIT
|
48
|
+
metadata: {}
|
49
|
+
post_install_message:
|
50
|
+
rdoc_options: []
|
51
|
+
require_paths:
|
52
|
+
- lib
|
53
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
requirements: []
|
64
|
+
rubyforge_project:
|
65
|
+
rubygems_version: 2.6.14
|
66
|
+
signing_key:
|
67
|
+
specification_version: 4
|
68
|
+
summary: DockerizeStack
|
69
|
+
test_files: []
|