dockerize-stack 0.0.1
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 +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: []
|