dockerize-stack 0.2.0 → 0.3.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 +18 -11
- data/lib/rails/dockerize_rails.rb +15 -31
- data/lib/rails/templates/docker/development/Dockerfile.erb +27 -40
- data/lib/rails/templates/docker/development/entrypoint.sh.erb +0 -1
- data/lib/rails/templates/docker/production/rails/Dockerfile.erb +75 -0
- data/lib/rails/templates/docker-compose.yml.erb +16 -7
- data/lib/rails/templates/dockerignore.erb +4 -2
- data/lib/version.rb +1 -1
- metadata +2 -3
- data/lib/rails/templates/docker/Dockerfile.production.erb +0 -89
- data/lib/rails/templates/id_rsa.sample +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d4d2f8c94a2b073521130e3b820f3b7359b5f28
|
4
|
+
data.tar.gz: bfbe602636915cb7b2737449ee11a1961dca069e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9fb191ef3ab134fd2f7d620273bfc3ba79def5461f11bea7584110f72f4575605e2743755024fb8b3f0b98ab222ff97470057604565ab8c88b189167ff167c05
|
7
|
+
data.tar.gz: 3265b9ffbac7b88caaaf5f336a20c0ce49a9774a58e0140d944c27d04d663378d5dd4965ab46216b476481a83675a9886f3b142951b0a88bcc6513174cbd9cea
|
data/README.md
CHANGED
@@ -3,53 +3,60 @@
|
|
3
3
|
This it's a generator for generate Dockerfile and docker-compose for your application for development
|
4
4
|
|
5
5
|
## Why?
|
6
|
+
|
6
7
|
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
|
|
8
9
|
This generator help you to have a basic template for your stack; focusing on develepment enviroment.
|
9
10
|
|
10
11
|
## Install
|
12
|
+
|
11
13
|
```
|
12
14
|
gem install dockerize-stack
|
13
15
|
```
|
16
|
+
|
14
17
|
or
|
18
|
+
|
15
19
|
```
|
16
20
|
docker pull devmasx/dockerize-stack
|
17
21
|
```
|
18
22
|
|
19
|
-
## Stacks available
|
20
|
-
|
21
|
-
- [x] Rails 5.1 (Ruby)
|
22
|
-
- [ ] Symfony (PHP)
|
23
|
-
- [ ] Phoenixframework (Elixir)
|
24
|
-
- [ ] Django (Python)
|
25
|
-
- [ ] Express (Node)
|
26
|
-
|
27
23
|
## Usage
|
24
|
+
|
28
25
|
```sh
|
29
26
|
dockerize-stack rails
|
30
27
|
```
|
28
|
+
|
31
29
|
or use docker image
|
30
|
+
|
32
31
|
```
|
33
32
|
docker run --user $(id -u) -it -v $(pwd):/usr/src devmasx/dockerize-stack rails
|
34
33
|
```
|
35
34
|
|
36
35
|
This script ask you:
|
36
|
+
|
37
37
|
- Ruby version
|
38
38
|
- Database type
|
39
39
|
|
40
40
|
example files generate:
|
41
|
+
|
41
42
|
```
|
42
43
|
/docker
|
43
44
|
--development
|
44
45
|
----Dockerfile
|
45
46
|
----entrypoint.sh
|
47
|
+
--production
|
48
|
+
----rails
|
49
|
+
------Dockerfile
|
50
|
+
------entrypoint.sh
|
51
|
+
----nginx
|
52
|
+
------Dockerfile
|
53
|
+
------entrypoint.sh
|
46
54
|
/.dockerignore
|
47
55
|
/docker-compose.yml
|
48
56
|
/config/database-docker.yml
|
49
57
|
```
|
50
58
|
|
51
59
|
## TODO
|
52
|
-
|
53
|
-
- [ ] Solve use rails generator in container
|
60
|
+
|
54
61
|
- [ ] Add integrations with all database types rails new supported ([mysql/postgresql/sqlite3/oracle/frontbase/ibm_db/sqlserver/jdbcmysql/jdbcsqlite3/jdbcpostgresql/jdbc])
|
55
|
-
- [x] Integrate Build with private
|
62
|
+
- [x] Integrate Build with private repositorys
|
@@ -2,7 +2,7 @@ require 'thor'
|
|
2
2
|
# Ask variables and render templates
|
3
3
|
class DockerizeRails < Thor
|
4
4
|
include Thor::Actions
|
5
|
-
attr_accessor :ruby_version, :database, :
|
5
|
+
attr_accessor :ruby_version, :database, :github_private, :docker_production
|
6
6
|
|
7
7
|
WORKDIR = ".".freeze
|
8
8
|
|
@@ -12,56 +12,40 @@ class DockerizeRails < Thor
|
|
12
12
|
|
13
13
|
desc 'generate_files', 'generate docker files for rails application'
|
14
14
|
def generate_files
|
15
|
-
ruby_version =
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
id_rsa = 'no' if id_rsa == ''
|
20
|
-
render_templates(ruby_version: ruby_version, database: database, id_rsa: id_rsa)
|
21
|
-
render_production_templates(ruby_version: ruby_version, database: database, id_rsa: id_rsa)
|
15
|
+
@ruby_version = ask_with_default('Ruby Version (default 2.5.1):', '2.5.1')
|
16
|
+
@database = ask('What is your Database?', limited_to: ['postgresql', 'mysql'])
|
17
|
+
@github_private = ask_with_default('You need github token for private gems? (default no):', 'no')
|
18
|
+
@docker_production = ask_with_default("You want generate docker-stack for production? y/n", 'n')
|
22
19
|
|
23
|
-
|
20
|
+
render_templates
|
21
|
+
render_production_templates if @docker_production != 'n' || @docker_production != 'no'
|
24
22
|
end
|
25
23
|
|
26
24
|
no_commands do
|
27
|
-
def render_templates
|
28
|
-
@ruby_version = ruby_version
|
29
|
-
@database = database
|
30
|
-
@id_rsa = id_rsa
|
31
|
-
|
25
|
+
def render_templates
|
32
26
|
template 'templates/docker/development/Dockerfile.erb', "#{WORKDIR}/docker/development/Dockerfile"
|
33
27
|
template 'templates/docker/development/entrypoint.sh.erb', "#{WORKDIR}/docker/development/entrypoint.sh"
|
34
28
|
template 'templates/docker-compose.yml.erb', "#{WORKDIR}/docker-compose.yml"
|
35
29
|
template 'templates/config/database-docker.yml.erb', "#{WORKDIR}/config/database-docker.yml"
|
36
30
|
template 'templates/dockerignore.erb', "#{WORKDIR}/.dockerignore"
|
37
|
-
append_or_create "#{WORKDIR}/.gitignore", '
|
38
|
-
volumes'
|
39
|
-
if @id_rsa == 'yes'
|
40
|
-
template 'templates/id_rsa.sample', "#{WORKDIR}/id_rsa.sample"
|
41
|
-
append_or_create "#{WORKDIR}/.gitignore", '
|
42
|
-
id_rsa
|
43
|
-
id_rsa.sample
|
44
|
-
'
|
45
|
-
end
|
46
31
|
puts 'Update your database.yml based in database-docker.yml'
|
47
32
|
end
|
48
33
|
|
49
|
-
def render_production_templates
|
50
|
-
response = ask("You want generate docker-stack for production?")
|
51
|
-
return false unless response
|
52
|
-
@ruby_version = ruby_version
|
53
|
-
@database = database
|
54
|
-
@id_rsa = id_rsa
|
55
|
-
|
34
|
+
def render_production_templates
|
56
35
|
directory 'templates/docker/production', "#{WORKDIR}/docker/production"
|
57
36
|
directory 'templates/docker/kubernetes', "#{WORKDIR}/docker/kubernetes"
|
58
37
|
|
59
|
-
template 'templates/docker/Dockerfile.
|
38
|
+
template 'templates/docker/production/rails/Dockerfile.erb', "#{WORKDIR}/docker/production/rails/Dockerfile"
|
60
39
|
end
|
61
40
|
end
|
62
41
|
|
63
42
|
private
|
64
43
|
|
44
|
+
def ask_with_default(question = '', default = '')
|
45
|
+
result = ask(question)
|
46
|
+
result != '' ? result : default
|
47
|
+
end
|
48
|
+
|
65
49
|
def append_or_create(file_path, file_content)
|
66
50
|
if File.exist?(file_path)
|
67
51
|
append_to_file file_path, file_content
|
@@ -1,50 +1,37 @@
|
|
1
|
-
FROM
|
1
|
+
FROM node:10.13.0-slim as nodejs
|
2
|
+
|
3
|
+
# ******Multi stage ********
|
4
|
+
FROM ruby:<%= ruby_version %>-slim
|
2
5
|
|
3
6
|
# install common dev libs
|
4
7
|
RUN apt-get update -qq && apt-get install -y \
|
5
|
-
build-essential
|
6
|
-
libpq-dev \
|
7
|
-
git
|
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
|
-
|
8
|
+
build-essential vim git
|
22
9
|
<% if database == "mysql" %>
|
23
|
-
# install
|
10
|
+
# install Mysql
|
24
11
|
RUN apt-get install -y mysql-client libmysqlclient-dev
|
25
12
|
<% elsif database == "postgresql" %>
|
26
|
-
# install
|
27
|
-
RUN apt-get install -y postgresql-client
|
13
|
+
# install Postgresql
|
14
|
+
RUN apt-get install -y postgresql-client libpq-dev
|
28
15
|
<% end %>
|
16
|
+
# install Nodejs 10.13.0 and Yarn 1.10.1
|
17
|
+
ENV NODE_VERSION=10.13.0 YARN_VERSION=1.10.1
|
18
|
+
COPY --from=nodejs /usr/local/bin/ /usr/local/bin/
|
19
|
+
COPY --from=nodejs /usr/local/lib/ /usr/local/lib/
|
20
|
+
COPY --from=nodejs /opt/yarn-v1.10.1/ /opt/yarn-v1.10.1/
|
29
21
|
|
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
22
|
WORKDIR /app
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
RUN
|
46
|
-
# RUN chmod 0644 /root/.ssh/id_rsa
|
47
|
-
RUN touch /root/.ssh/known_hosts
|
48
|
-
RUN eval "$(ssh-agent -s)" && ssh-add ~/.ssh/id_rsa && ssh-add -l && ssh-add -L && echo "Host github.com\n\tIdentityFile ~/.ssh/id_rsa" >> /root/.ssh/config
|
49
|
-
RUN ssh-keyscan -t rsa github.com > ~/.ssh/known_hosts
|
23
|
+
<% if @github_private == 'yes' %>
|
24
|
+
# Private repository
|
25
|
+
ARG GITHUB_TOKEN
|
26
|
+
ARG GITHUB_USERNAME
|
27
|
+
RUN bundle config github.com ${GITHUB_USERNAME}:${GITHUB_TOKEN}
|
50
28
|
<% end %>
|
29
|
+
# gems cache layer
|
30
|
+
COPY Gemfile Gemfile.lock /app/
|
31
|
+
RUN bundle install -j 4
|
32
|
+
|
33
|
+
# node_modules cache layer
|
34
|
+
COPY package.json yarn.lock /app/
|
35
|
+
RUN yarn install --pure-lockfile
|
36
|
+
|
37
|
+
COPY . .
|
@@ -0,0 +1,75 @@
|
|
1
|
+
FROM node:10.13.0-slim as nodejs
|
2
|
+
|
3
|
+
# ******Multi stage ********
|
4
|
+
FROM ruby:<%= ruby_version %>-slim as builder
|
5
|
+
|
6
|
+
ENV RAILS_ENV=production NODE_ENV=production
|
7
|
+
|
8
|
+
# install common dev libs
|
9
|
+
RUN apt-get update -qq && apt-get install -y \
|
10
|
+
build-essential git
|
11
|
+
<% if database == "mysql" %>
|
12
|
+
# install mysql
|
13
|
+
RUN apt-get update -qq && apt-get install -y libmysqlclient-dev mysql-client
|
14
|
+
<% elsif database == "postgresql" %>
|
15
|
+
# install postgresql
|
16
|
+
RUN apt-get update -qq && apt-get install -y libpq-dev postgresql-client
|
17
|
+
<% end %>
|
18
|
+
# install Nodejs 10.13.0 and Yarn 1.10.1
|
19
|
+
ENV NODE_VERSION=10.13.0 YARN_VERSION=1.10.1
|
20
|
+
COPY --from=nodejs /usr/local/bin/ /usr/local/bin/
|
21
|
+
COPY --from=nodejs /usr/local/lib/ /usr/local/lib/
|
22
|
+
COPY --from=nodejs /opt/yarn-v1.10.1/ /opt/yarn-v1.10.1/
|
23
|
+
|
24
|
+
WORKDIR /app
|
25
|
+
<% if @github_private == 'yes' %>
|
26
|
+
# private repository
|
27
|
+
ARG GITHUB_TOKEN
|
28
|
+
ARG GITHUB_USERNAME
|
29
|
+
RUN bundle config github.com ${GITHUB_USERNAME}:${GITHUB_TOKEN}
|
30
|
+
<% end %>
|
31
|
+
# gems cache layer
|
32
|
+
COPY Gemfile Gemfile.lock /app/
|
33
|
+
RUN bundle install -j 4 --without development test staging --deployment
|
34
|
+
|
35
|
+
# node_modules cache layer
|
36
|
+
COPY package.json yarn.lock /app/
|
37
|
+
RUN yarn install --pure-lockfile
|
38
|
+
|
39
|
+
COPY . .
|
40
|
+
|
41
|
+
RUN rails assets:precompile
|
42
|
+
|
43
|
+
# remove unnecessary files
|
44
|
+
RUN rm -r node_modules
|
45
|
+
|
46
|
+
# *******************************************
|
47
|
+
# ************* Multi Stage *****************
|
48
|
+
# *******************************************
|
49
|
+
FROM ruby:<%= ruby_version %>
|
50
|
+
|
51
|
+
ENV RAILS_ENV=production NODE_ENV=production
|
52
|
+
|
53
|
+
<% if database == "mysql" %>
|
54
|
+
# install mysql
|
55
|
+
RUN apt-get update -qq && apt-get install -y mysql-client \
|
56
|
+
&& apt-get clean \
|
57
|
+
&& rm -rf /var/lib/apt/lists/*
|
58
|
+
<% elsif database == "postgresql" %>
|
59
|
+
# install postgresql
|
60
|
+
RUN apt-get update -qq && apt-get install -y postgresql-client \
|
61
|
+
&& apt-get clean \
|
62
|
+
&& rm -rf /var/lib/apt/lists/*
|
63
|
+
<% end %>
|
64
|
+
# install Nodejs 10.13.0 and Yarn 1.10.1
|
65
|
+
ENV NODE_VERSION=10.13.0 YARN_VERSION=1.10.1
|
66
|
+
COPY --from=nodejs /usr/local/bin/ /usr/local/bin/
|
67
|
+
COPY --from=nodejs /usr/local/lib/ /usr/local/lib/
|
68
|
+
COPY --from=nodejs /opt/yarn-v1.10.1/ /opt/yarn-v1.10.1/
|
69
|
+
|
70
|
+
WORKDIR /app
|
71
|
+
|
72
|
+
COPY --from=builder /usr/local/bundle /usr/local/bundle
|
73
|
+
COPY --from=builder /app/ /app/
|
74
|
+
|
75
|
+
CMD [ "sh", "-c", "bundle exec rake db:create db:migrate && bundle exec rails server -b 0.0.0.0" ]
|
@@ -4,13 +4,18 @@ services:
|
|
4
4
|
build:
|
5
5
|
dockerfile: ./docker/development/Dockerfile
|
6
6
|
context: ./
|
7
|
+
<% if @github_private == 'yes' %>
|
8
|
+
args:
|
9
|
+
- GITHUB_TOKEN=${GITHUB_TOKEN}
|
10
|
+
- GITHUB_USERNAME=${GITHUB_USERNAME}
|
11
|
+
<% end %>
|
7
12
|
container_name: web
|
8
13
|
stdin_open: true
|
9
14
|
tty: true
|
10
15
|
command: "bash ./docker/development/entrypoint.sh"
|
11
16
|
volumes:
|
12
17
|
- .:/app
|
13
|
-
-
|
18
|
+
- gems:/usr/local/bundle
|
14
19
|
ports:
|
15
20
|
- "3000:3000"
|
16
21
|
depends_on:
|
@@ -25,14 +30,14 @@ services:
|
|
25
30
|
environment:
|
26
31
|
MYSQL_ROOT_PASSWORD: password
|
27
32
|
volumes:
|
28
|
-
-
|
33
|
+
- database:/var/lib/mysql
|
29
34
|
<% elsif database == "postgresql" %>
|
30
35
|
db:
|
31
36
|
image: postgres:9.6
|
32
37
|
# ports:
|
33
38
|
# - "5432:5432"
|
34
39
|
volumes:
|
35
|
-
-
|
40
|
+
- database:/var/lib/postgresql/data
|
36
41
|
<% end %>
|
37
42
|
# redis:
|
38
43
|
# image: redis
|
@@ -44,13 +49,17 @@ services:
|
|
44
49
|
# - 1025:1025
|
45
50
|
# - 1080:1080
|
46
51
|
|
52
|
+
volumes:
|
53
|
+
gems:
|
54
|
+
database:
|
55
|
+
|
47
56
|
# USAGE
|
48
57
|
|
49
|
-
#
|
58
|
+
# Execute a container for run rails console or rake tasks
|
50
59
|
# docker-compose run --rm web bash
|
51
60
|
|
52
|
-
#
|
61
|
+
# Attach the container when use binding.pry
|
53
62
|
# docker attach web
|
54
63
|
|
55
|
-
#
|
56
|
-
# sudo chown -R $USER:$USER
|
64
|
+
# When run rails generator you need to run
|
65
|
+
# sudo chown -R $USER:$USER .
|
@@ -1,11 +1,12 @@
|
|
1
|
-
# Ignore all
|
1
|
+
# Ignore all files from .gitignore
|
2
|
+
# cat .gitignore > .dockerignore && cat .gitignore >> .dockerignore
|
3
|
+
|
2
4
|
/log/*
|
3
5
|
/tmp/*
|
4
6
|
|
5
7
|
.byebug_history
|
6
8
|
|
7
9
|
volumes
|
8
|
-
.git
|
9
10
|
|
10
11
|
public/packs
|
11
12
|
public/packs-test
|
@@ -15,3 +16,4 @@ node_modules
|
|
15
16
|
coverage
|
16
17
|
yarn-error.log
|
17
18
|
.DS_Store
|
19
|
+
.git
|
data/lib/version.rb
CHANGED
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.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Savignano
|
@@ -38,7 +38,6 @@ files:
|
|
38
38
|
- lib/rails/dockerize_rails.rb
|
39
39
|
- lib/rails/templates/config/database-docker.yml.erb
|
40
40
|
- lib/rails/templates/docker-compose.yml.erb
|
41
|
-
- lib/rails/templates/docker/Dockerfile.production.erb
|
42
41
|
- lib/rails/templates/docker/development/Dockerfile.erb
|
43
42
|
- lib/rails/templates/docker/development/entrypoint.sh.erb
|
44
43
|
- lib/rails/templates/docker/kubernetes/scripts/deploy.sh
|
@@ -57,9 +56,9 @@ files:
|
|
57
56
|
- lib/rails/templates/docker/production/nginx/entrypoint.sh
|
58
57
|
- lib/rails/templates/docker/production/nginx/etc/nginx/conf.d/default.conf
|
59
58
|
- lib/rails/templates/docker/production/nginx/etc/nginx/nginx.conf
|
59
|
+
- lib/rails/templates/docker/production/rails/Dockerfile.erb
|
60
60
|
- lib/rails/templates/docker/production/rails/entrypoint.sh
|
61
61
|
- lib/rails/templates/dockerignore.erb
|
62
|
-
- lib/rails/templates/id_rsa.sample
|
63
62
|
- lib/version.rb
|
64
63
|
homepage: https://github.com/MiguelSavignano/dockerize-stack
|
65
64
|
licenses:
|
@@ -1,89 +0,0 @@
|
|
1
|
-
FROM ruby:<%= ruby_version %> as builder
|
2
|
-
|
3
|
-
ENV RAILS_ENV=production
|
4
|
-
ENV NODE_ENV=production
|
5
|
-
|
6
|
-
# install common dev libs
|
7
|
-
RUN apt-get update -qq && apt-get dist-upgrade -y && apt-get install -y \
|
8
|
-
build-essential \
|
9
|
-
apt-transport-https \
|
10
|
-
git \
|
11
|
-
curl
|
12
|
-
<% if database == "mysql" %>
|
13
|
-
# install mysql
|
14
|
-
RUN apt-get update -qq && apt-get dist-upgrade -y && apt-get install -y libmysqlclient-dev mysql-client
|
15
|
-
<% elsif database == "postgresql" %>
|
16
|
-
# install postgresql
|
17
|
-
RUN apt-get update -qq && apt-get dist-upgrade -y && apt-get install -y libpq-dev postgresql-client
|
18
|
-
<% end %>
|
19
|
-
# install node 8.9.1 LTS
|
20
|
-
RUN curl -sL https://deb.nodesource.com/setup_8.x | bin/bash - \
|
21
|
-
&& apt-get update -qq && apt-get dist-upgrade -y && apt-get update && apt-get install -y nodejs
|
22
|
-
|
23
|
-
# install yarn
|
24
|
-
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
|
25
|
-
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
|
26
|
-
&& apt-get update && apt-get dist-upgrade -y && apt-get update && apt-get install yarn
|
27
|
-
|
28
|
-
RUN mkdir /app
|
29
|
-
WORKDIR /app
|
30
|
-
|
31
|
-
# ************Install Ruby gems***************************
|
32
|
-
# Invalidate gems cache if change Gemfile or Gemfile.lock
|
33
|
-
COPY Gemfile Gemfile.lock /app/
|
34
|
-
RUN bundle install -j 4 --without development test staging --deployment
|
35
|
-
# ******************************************************
|
36
|
-
|
37
|
-
# ********Install Node packages************************
|
38
|
-
# Invalidate node_modules cache if yarn.lock change
|
39
|
-
COPY package.json yarn.lock /app/
|
40
|
-
RUN yarn install --pure-lockfile --production
|
41
|
-
# ****************************************************
|
42
|
-
|
43
|
-
COPY . /app
|
44
|
-
RUN rails assets:precompile
|
45
|
-
|
46
|
-
# *******************************************
|
47
|
-
# **************** Multi Stage **************
|
48
|
-
# *******************************************
|
49
|
-
FROM ruby:2.5.0-slim
|
50
|
-
|
51
|
-
ENV RAILS_ENV=production
|
52
|
-
ENV NODE_ENV=production
|
53
|
-
|
54
|
-
<% if database == "mysql" %>
|
55
|
-
# install mysql
|
56
|
-
RUN apt-get update -qq && apt-get dist-upgrade -y && apt-get install -y mysql-client º
|
57
|
-
&& apt-get clean \
|
58
|
-
&& rm -rf /var/lib/apt/lists/*
|
59
|
-
<% elsif database == "postgresql" %>
|
60
|
-
# install postgresql
|
61
|
-
RUN apt-get update -qq && apt-get dist-upgrade -y && apt-get install -y postgresql-client \
|
62
|
-
&& apt-get clean \
|
63
|
-
&& rm -rf /var/lib/apt/lists/*
|
64
|
-
<% end %>
|
65
|
-
# install node 8.9.1 LTS
|
66
|
-
RUN curl -sL https://deb.nodesource.com/setup_8.x | bin/bash -
|
67
|
-
RUN apt-get update && apt-get install -y nodejs \
|
68
|
-
&& apt-get clean \
|
69
|
-
&& rm -rf /var/lib/apt/lists/*
|
70
|
-
|
71
|
-
RUN mkdir /app
|
72
|
-
WORKDIR /app
|
73
|
-
|
74
|
-
# ************Copy only Rails app, prevent copy unnecessary files (.dockerignore don't work)***************************
|
75
|
-
COPY --from=builder /app/app /app/app
|
76
|
-
COPY --from=builder /app/config /app/config
|
77
|
-
COPY --from=builder /app/bin /app/bin
|
78
|
-
COPY --from=builder /app/db /app/db
|
79
|
-
COPY --from=builder /app/lib /app/lib
|
80
|
-
COPY --from=builder /app/public /app/public
|
81
|
-
COPY --from=builder /app/vendor /app/vendor
|
82
|
-
COPY --from=builder /app/config.ru app/Gemfile app/Gemfile.lock app/Rakefile /app/
|
83
|
-
# *********************************************************************************************************************
|
84
|
-
|
85
|
-
COPY --from=builder /usr/local/bundle /usr/local/bundle
|
86
|
-
|
87
|
-
COPY --from=builder /app/docker/production/rails/entrypoint.sh /app/docker/production/rails/entrypoint.sh
|
88
|
-
|
89
|
-
CMD ["/app/docker/production/rails/entrypoint.sh"]
|
@@ -1 +0,0 @@
|
|
1
|
-
Replace this file with your id_rsa.pub file
|