railsdock 0.2.0 → 0.3.0

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.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -0
  3. data/Gemfile.lock +1 -1
  4. data/example-app/.browserslistrc +1 -0
  5. data/example-app/.gitignore +31 -0
  6. data/example-app/.ruby-version +1 -0
  7. data/example-app/Gemfile +46 -0
  8. data/example-app/Gemfile.lock +201 -0
  9. data/example-app/README.md +24 -0
  10. data/example-app/Rakefile +6 -0
  11. data/example-app/app/assets/config/manifest.js +2 -0
  12. data/example-app/app/assets/images/.keep +0 -0
  13. data/example-app/app/assets/stylesheets/application.css +15 -0
  14. data/example-app/app/channels/application_cable/channel.rb +4 -0
  15. data/example-app/app/channels/application_cable/connection.rb +4 -0
  16. data/example-app/app/controllers/application_controller.rb +2 -0
  17. data/example-app/app/controllers/concerns/.keep +0 -0
  18. data/example-app/app/helpers/application_helper.rb +2 -0
  19. data/example-app/app/javascript/channels/consumer.js +6 -0
  20. data/example-app/app/javascript/channels/index.js +5 -0
  21. data/example-app/app/javascript/packs/application.js +17 -0
  22. data/example-app/app/jobs/application_job.rb +7 -0
  23. data/example-app/app/mailers/application_mailer.rb +4 -0
  24. data/example-app/app/models/application_record.rb +3 -0
  25. data/example-app/app/models/concerns/.keep +0 -0
  26. data/example-app/app/views/layouts/application.html.erb +15 -0
  27. data/example-app/app/views/layouts/mailer.html.erb +13 -0
  28. data/example-app/app/views/layouts/mailer.text.erb +1 -0
  29. data/example-app/babel.config.js +72 -0
  30. data/example-app/bin/bundle +105 -0
  31. data/example-app/bin/rails +9 -0
  32. data/example-app/bin/rake +9 -0
  33. data/example-app/bin/setup +36 -0
  34. data/example-app/bin/spring +17 -0
  35. data/example-app/bin/webpack +18 -0
  36. data/example-app/bin/webpack-dev-server +18 -0
  37. data/example-app/bin/yarn +11 -0
  38. data/example-app/config/application.rb +35 -0
  39. data/example-app/config/boot.rb +4 -0
  40. data/example-app/config/cable.yml +10 -0
  41. data/example-app/config/credentials.yml.enc +1 -0
  42. data/example-app/config/database.yml +18 -0
  43. data/example-app/config/environment.rb +5 -0
  44. data/example-app/config/environments/development.rb +62 -0
  45. data/example-app/config/environments/production.rb +112 -0
  46. data/example-app/config/environments/test.rb +48 -0
  47. data/example-app/config/initializers/application_controller_renderer.rb +8 -0
  48. data/example-app/config/initializers/assets.rb +14 -0
  49. data/example-app/config/initializers/backtrace_silencers.rb +7 -0
  50. data/example-app/config/initializers/content_security_policy.rb +30 -0
  51. data/example-app/config/initializers/cookies_serializer.rb +5 -0
  52. data/example-app/config/initializers/filter_parameter_logging.rb +4 -0
  53. data/example-app/config/initializers/inflections.rb +16 -0
  54. data/example-app/config/initializers/mime_types.rb +4 -0
  55. data/example-app/config/initializers/wrap_parameters.rb +14 -0
  56. data/example-app/config/locales/en.yml +33 -0
  57. data/example-app/config/puma.rb +38 -0
  58. data/example-app/config/routes.rb +3 -0
  59. data/example-app/config/spring.rb +6 -0
  60. data/example-app/config/storage.yml +34 -0
  61. data/example-app/config/webpack/development.js +5 -0
  62. data/example-app/config/webpack/environment.js +3 -0
  63. data/example-app/config/webpack/production.js +5 -0
  64. data/example-app/config/webpack/test.js +5 -0
  65. data/example-app/config/webpacker.yml +96 -0
  66. data/example-app/config.ru +5 -0
  67. data/example-app/db/schema.rb +18 -0
  68. data/example-app/db/seeds.rb +7 -0
  69. data/example-app/lib/assets/.keep +0 -0
  70. data/example-app/lib/tasks/.keep +0 -0
  71. data/example-app/log/.keep +0 -0
  72. data/example-app/package.json +15 -0
  73. data/example-app/postcss.config.js +12 -0
  74. data/example-app/public/404.html +67 -0
  75. data/example-app/public/422.html +67 -0
  76. data/example-app/public/500.html +66 -0
  77. data/example-app/public/apple-touch-icon-precomposed.png +0 -0
  78. data/example-app/public/apple-touch-icon.png +0 -0
  79. data/example-app/public/favicon.ico +0 -0
  80. data/example-app/public/robots.txt +1 -0
  81. data/example-app/storage/.keep +0 -0
  82. data/example-app/tmp/.keep +0 -0
  83. data/example-app/vendor/.keep +0 -0
  84. data/example-app/yarn.lock +7721 -0
  85. data/lib/railsdock/commands/install.rb +11 -3
  86. data/lib/railsdock/templates/install/default/Dockerfile +10 -4
  87. data/lib/railsdock/templates/install/default/default.env.erb +5 -18
  88. data/lib/railsdock/templates/install/default/docker-compose.yml.erb +8 -18
  89. data/lib/railsdock/templates/install/default/{dev-entrypoint → entrypoint.sh} +4 -4
  90. data/lib/railsdock/templates/install/postgres/docker-compose.yml.erb +2 -0
  91. data/lib/railsdock/templates/install/postgres/postgres.env +0 -3
  92. data/lib/railsdock/version.rb +1 -1
  93. metadata +85 -5
  94. data/lib/railsdock/templates/install/default/docker-compose.mac.yml +0 -7
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'ostruct'
4
4
  require 'erb'
5
+ require 'bundler'
5
6
  require_relative '../command'
6
7
  require_relative '../logo'
7
8
 
@@ -38,7 +39,8 @@ module Railsdock
38
39
  app_name: options[:app_name] || get_app_name,
39
40
  is_windows?: platform.windows?,
40
41
  is_mac?: platform.mac?,
41
- uid: cmd.run('id -u').out.chomp
42
+ uid: cmd.run('id -u').out.chomp,
43
+ ruby_version: get_ruby_version
42
44
  )
43
45
  end
44
46
 
@@ -58,7 +60,7 @@ module Railsdock
58
60
  inject_db_script_into_entrypoint(service)
59
61
  end
60
62
  end
61
- cmd.run('chmod +x ./dev-entrypoint')
63
+ cmd.run('chmod +x ./docker/ruby/entrypoint.sh')
62
64
  output.puts POST_INSTALL_MESSAGE
63
65
  end
64
66
 
@@ -68,12 +70,16 @@ module Railsdock
68
70
  ::File.open('./config/application.rb').read.match(/module (.+)\s/)[1].downcase
69
71
  end
70
72
 
73
+ def get_ruby_version
74
+ ::Bundler.definition.ruby_version.versions[0] || RUBY_VERSION
75
+ end
76
+
71
77
  def copy_db_yml(erb_file)
72
78
  file.copy_file(erb_file, './config/database.yml', context: @variables)
73
79
  end
74
80
 
75
81
  def inject_db_script_into_entrypoint(service)
76
- file.inject_into_file('./dev-entrypoint', after: "echo \"DB is not ready, sleeping...\"\n") do
82
+ file.inject_into_file('./docker/ruby/entrypoint.sh', after: "echo \"DB is not ready, sleeping...\"\n") do
77
83
  <<~BASH
78
84
  until nc -vz #{service} #{OPTIONS_HASH[:database][:default_port][service]}; do
79
85
  sleep 1
@@ -148,6 +154,8 @@ module Railsdock
148
154
  case File.basename(path)
149
155
  when 'Dockerfile'
150
156
  file.copy_file(path, "#{@variables.dockerfile_dir}ruby/Dockerfile", context: @variables)
157
+ when 'entrypoint.sh'
158
+ file.copy_file(path, "#{@variables.dockerfile_dir}ruby/entrypoint.sh", context: @variables)
151
159
  when 'docker-compose.yml.erb'
152
160
  file.copy_file(path, './docker-compose.yml', context: @variables)
153
161
  when 'default.env.erb'
@@ -10,7 +10,7 @@ ARG DEBIAN_FRONTEND=noninteractive
10
10
  # Base Software Install
11
11
  ###############################################################################
12
12
 
13
- ARG RAILSDOCK_NODE_VERSION=11
13
+ ARG RAILSDOCK_NODE_VERSION=12
14
14
 
15
15
  RUN curl -sL https://deb.nodesource.com/setup_$RAILSDOCK_NODE_VERSION.x | bash -
16
16
 
@@ -50,8 +50,10 @@ RUN groupadd -g $RUBY_GID $USER && \
50
50
 
51
51
  ENV LANG C.UTF-8
52
52
 
53
+ # Update Rubygems to latest
54
+ RUN gem update --system
55
+
53
56
  # Point Bundler at /gems. This will cause Bundler to re-use gems that have already been installed on the gems volume
54
- ENV BUNDLE_PATH /gems
55
57
  ENV BUNDLE_HOME /gems
56
58
 
57
59
  # Increase how many threads Bundler uses when installing. Optional!
@@ -67,7 +69,9 @@ ENV GEM_HOME /gems
67
69
  ENV GEM_PATH /gems
68
70
 
69
71
  # Add /gems/bin to the path so any installed gem binaries are runnable from bash.
70
- ENV PATH /gems/bin:$PATH
72
+ ENV PATH ${GEM_HOME}/bin:${GEM_HOME}/gems/bin:$PATH
73
+
74
+ RUN unset BUNDLE_PATH && unset BUNDLE_BIN
71
75
 
72
76
  ###############################################################################
73
77
  # Optional Software Install
@@ -89,11 +93,13 @@ RUN if [ "$INSTALL_PG_CLIENT" = true ]; then \
89
93
  ###############################################################################
90
94
 
91
95
  RUN mkdir -p "$GEM_HOME" && chown $USER:$USER "$GEM_HOME"
96
+ RUN mkdir -p /app && chown $USER:$USER /app
92
97
 
93
- RUN mkdir -p /app
94
98
  WORKDIR /app
95
99
 
96
100
  RUN mkdir -p node_modules && chown $USER:$USER node_modules
101
+ RUN mkdir -p public/packs && chown $USER:$USER public/packs
102
+ RUN mkdir -p tmp/cache && chown $USER:$USER tmp/cache
97
103
 
98
104
  USER $USER
99
105
 
@@ -2,23 +2,10 @@
2
2
  ############################# General Setup ###################################
3
3
  ###############################################################################
4
4
 
5
- ### Paths #####################################################################
6
-
7
- # Point to the path of your applications code on your host
8
- APP_CODE_PATH_HOST=../
9
-
10
- # Point to where the `APP_CODE_PATH_HOST` should be in the container.
11
- APP_CODE_PATH_CONTAINER=/app
12
-
13
- ### DRIVERS ###################################################################
14
-
15
- # All volumes driver
16
- VOLUMES_DRIVER=local
17
-
18
5
  ### Docker compose files ######################################################
19
6
 
20
7
  # Select which docker-compose files to include. If using an override append `:docker-compose.example.yml` at the end
21
- COMPOSE_FILE=docker-compose.yml<%= ':docker-compose.mac.yml' if is_mac? %>
8
+ COMPOSE_FILE=docker-compose.yml
22
9
 
23
10
  # Change the separator from : to ; on Windows
24
11
  COMPOSE_PATH_SEPARATOR=<%= is_windows? ? ';' : ':' %>
@@ -32,13 +19,13 @@ COMPOSE_PROJECT_NAME=<%= app_name %>
32
19
 
33
20
 
34
21
  ### RUBY ######################################################################
35
- # Select a Ruby Version of the Ruby container. Accepted values: 2.2-2.6
22
+ # Select a Ruby Version of the Ruby container. Accepted values: 2.2.x-2.7.x
36
23
 
37
- RAILSDOCK_RUBY_VERSION=2.6
24
+ RAILSDOCK_RUBY_VERSION=<%= ruby_version %>
38
25
  BUNDLE_JOBS=10
39
26
  BUNDLE_RETRY=3
40
27
  RAILS_SERVER_HOST_PORT=3000
41
28
  RUBY_UID=<%= uid %>
42
29
  RUBY_GID=<%= uid %>
43
- # Select a Node Version for the Ruby container. Accepted values: 8-11
44
- RAILSDOCK_NODE_VERSION=11
30
+ # Select a Node Version for the Ruby container. Accepted values: 8-13
31
+ RAILSDOCK_NODE_VERSION=12
@@ -6,10 +6,12 @@ x-ruby: &ruby-base
6
6
  args:
7
7
  - RAILSDOCK_RUBY_VERSION=${RAILSDOCK_RUBY_VERSION}
8
8
  - RAILSDOCK_NODE_VERSION=${RAILSDOCK_NODE_VERSION}
9
+ - RAILSDOCK_BUNDLE_JOBS=${BUNDLE_JOBS}
10
+ - RAILSDOCK_BUNDLE_RETRY=${BUNDLE_RETRY}
9
11
  - RUBY_UID=${RUBY_UID}
10
12
  - RUBY_GID=${RUBY_GID}
11
13
  volumes:
12
- - .:/app
14
+ - .:/app:cached
13
15
  - gems:/gems
14
16
  - node_modules:/app/node_modules
15
17
  - packs:/app/public/packs
@@ -24,26 +26,14 @@ x-ruby: &ruby-base
24
26
  volumes:
25
27
  gems:
26
28
  node_modules:
29
+ packs:
30
+ rails_cache:
27
31
 
28
32
  services:
29
33
 
30
34
  rails:
31
35
  <<: *ruby-base
32
- build:
33
- context: <%= dockerfile_dir %>ruby
34
- args:
35
- - RAILSDOCK_BUNDLE_JOBS=${BUNDLE_JOBS}
36
- - RAILSDOCK_BUNDLE_RETRY=${BUNDLE_RETRY}
37
- environment:
38
- - DATABASE_USER=${DATABASE_USER}
39
- - DATABASE_PASSWORD=${DATABASE_PASSWORD}
40
- - DATABASE_HOST=${DATABASE_HOST}
41
- volumes:
42
- - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
43
- - gems:/gems
44
- - node_modules:${APP_CODE_PATH_CONTAINER}/node_modules
36
+ command: rails server -p 3000 -b '0.0.0.0'
37
+ entrypoint: ./docker/ruby/entrypoint.sh
45
38
  ports:
46
- - "${RAILS_SERVER_HOST_PORT}:3000"
47
- user: ruby
48
- tty: true
49
- stdin_open: true
39
+ - "${RAILS_SERVER_HOST_PORT}:3000"
@@ -22,10 +22,10 @@ echo "DB is not ready, sleeping..."
22
22
  echo "DB is ready, starting Rails."
23
23
 
24
24
  # 4: Specify a default command, in case it wasn't issued:
25
- if [ -z "$1" ]; then set -- rails server -p 3000 -b 0.0.0.0 "$@"; fi
25
+ if [ -z "$1" ]; then set -- bundle exec rails server -p 3000 -b 0.0.0.0 "$@"; fi
26
26
 
27
27
  # 5: Run the checks only if the app code is going to be executed:
28
- if [[ "$1" = "rails" ]]
28
+ if [[ "$3" = "rails" ]]
29
29
  then
30
30
  # Clean up any orphaned lock file
31
31
  unlock_setup
@@ -49,7 +49,7 @@ then
49
49
  # check if the docker host is running on mac or windows
50
50
  if ! check_host; then
51
51
  HOST_IP=$(ip route | awk 'NR==1 {print $3}')
52
- echo "$HOST_IP $HOST_DOMAIN" >> /etc/hosts
52
+ echo "$HOST_IP $HOST_DOMAIN" | sudo tee -a /etc/hosts > /dev/null
53
53
  fi
54
54
 
55
55
  # 10: 'Unlock' the setup process:
@@ -58,7 +58,7 @@ then
58
58
  # 11: If the command to execute is 'rails server', then we must remove any
59
59
  # pid file present. Suddenly killing and removing app containers might leave
60
60
  # this file, and prevent rails from starting-up if present:
61
- if [[ "$2" = "s" || "$2" = "server" ]]; then rm -rf /app/tmp/pids/server.pid; fi
61
+ if [[ "$4" = "s" || "$4" = "server" ]]; then rm -rf /app/tmp/pids/server.pid; fi
62
62
  fi
63
63
 
64
64
  # 10: Execute the given or default command:
@@ -5,6 +5,8 @@
5
5
  context: <%= dockerfile_dir %>postgres
6
6
  args:
7
7
  - POSTGRES_VERSION=${POSTGRES_VERSION}
8
+ environment:
9
+ - POSTGRES_HOST_AUTH_METHOD=trust
8
10
  ports:
9
11
  - "${POSTGRES_HOST_PORT}:5432"
10
12
  volumes:
@@ -2,8 +2,5 @@
2
2
 
3
3
  ### POSTGRES ##################################################################
4
4
 
5
- DATABASE_HOST=postgres
6
- DATABASE_PASSWORD=
7
- DATABASE_USER=postgres
8
5
  POSTGRES_VERSION=11
9
6
  POSTGRES_HOST_PORT=5432
@@ -1,3 +1,3 @@
1
1
  module Railsdock
2
- VERSION = '0.2.0'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: railsdock
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Boe
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-05-18 00:00:00.000000000 Z
12
+ date: 2020-05-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
@@ -221,6 +221,87 @@ files:
221
221
  - Rakefile
222
222
  - bin/console
223
223
  - bin/setup
224
+ - example-app/.browserslistrc
225
+ - example-app/.gitignore
226
+ - example-app/.ruby-version
227
+ - example-app/Gemfile
228
+ - example-app/Gemfile.lock
229
+ - example-app/README.md
230
+ - example-app/Rakefile
231
+ - example-app/app/assets/config/manifest.js
232
+ - example-app/app/assets/images/.keep
233
+ - example-app/app/assets/stylesheets/application.css
234
+ - example-app/app/channels/application_cable/channel.rb
235
+ - example-app/app/channels/application_cable/connection.rb
236
+ - example-app/app/controllers/application_controller.rb
237
+ - example-app/app/controllers/concerns/.keep
238
+ - example-app/app/helpers/application_helper.rb
239
+ - example-app/app/javascript/channels/consumer.js
240
+ - example-app/app/javascript/channels/index.js
241
+ - example-app/app/javascript/packs/application.js
242
+ - example-app/app/jobs/application_job.rb
243
+ - example-app/app/mailers/application_mailer.rb
244
+ - example-app/app/models/application_record.rb
245
+ - example-app/app/models/concerns/.keep
246
+ - example-app/app/views/layouts/application.html.erb
247
+ - example-app/app/views/layouts/mailer.html.erb
248
+ - example-app/app/views/layouts/mailer.text.erb
249
+ - example-app/babel.config.js
250
+ - example-app/bin/bundle
251
+ - example-app/bin/rails
252
+ - example-app/bin/rake
253
+ - example-app/bin/setup
254
+ - example-app/bin/spring
255
+ - example-app/bin/webpack
256
+ - example-app/bin/webpack-dev-server
257
+ - example-app/bin/yarn
258
+ - example-app/config.ru
259
+ - example-app/config/application.rb
260
+ - example-app/config/boot.rb
261
+ - example-app/config/cable.yml
262
+ - example-app/config/credentials.yml.enc
263
+ - example-app/config/database.yml
264
+ - example-app/config/environment.rb
265
+ - example-app/config/environments/development.rb
266
+ - example-app/config/environments/production.rb
267
+ - example-app/config/environments/test.rb
268
+ - example-app/config/initializers/application_controller_renderer.rb
269
+ - example-app/config/initializers/assets.rb
270
+ - example-app/config/initializers/backtrace_silencers.rb
271
+ - example-app/config/initializers/content_security_policy.rb
272
+ - example-app/config/initializers/cookies_serializer.rb
273
+ - example-app/config/initializers/filter_parameter_logging.rb
274
+ - example-app/config/initializers/inflections.rb
275
+ - example-app/config/initializers/mime_types.rb
276
+ - example-app/config/initializers/wrap_parameters.rb
277
+ - example-app/config/locales/en.yml
278
+ - example-app/config/puma.rb
279
+ - example-app/config/routes.rb
280
+ - example-app/config/spring.rb
281
+ - example-app/config/storage.yml
282
+ - example-app/config/webpack/development.js
283
+ - example-app/config/webpack/environment.js
284
+ - example-app/config/webpack/production.js
285
+ - example-app/config/webpack/test.js
286
+ - example-app/config/webpacker.yml
287
+ - example-app/db/schema.rb
288
+ - example-app/db/seeds.rb
289
+ - example-app/lib/assets/.keep
290
+ - example-app/lib/tasks/.keep
291
+ - example-app/log/.keep
292
+ - example-app/package.json
293
+ - example-app/postcss.config.js
294
+ - example-app/public/404.html
295
+ - example-app/public/422.html
296
+ - example-app/public/500.html
297
+ - example-app/public/apple-touch-icon-precomposed.png
298
+ - example-app/public/apple-touch-icon.png
299
+ - example-app/public/favicon.ico
300
+ - example-app/public/robots.txt
301
+ - example-app/storage/.keep
302
+ - example-app/tmp/.keep
303
+ - example-app/vendor/.keep
304
+ - example-app/yarn.lock
224
305
  - exe/railsdock
225
306
  - ext/railsdock/extconf.rb
226
307
  - ext/railsdock/railsdock.c
@@ -232,9 +313,8 @@ files:
232
313
  - lib/railsdock/logo.rb
233
314
  - lib/railsdock/templates/install/default/Dockerfile
234
315
  - lib/railsdock/templates/install/default/default.env.erb
235
- - lib/railsdock/templates/install/default/dev-entrypoint
236
- - lib/railsdock/templates/install/default/docker-compose.mac.yml
237
316
  - lib/railsdock/templates/install/default/docker-compose.yml.erb
317
+ - lib/railsdock/templates/install/default/entrypoint.sh
238
318
  - lib/railsdock/templates/install/memcached/Dockerfile
239
319
  - lib/railsdock/templates/install/memcached/docker-compose.yml.erb
240
320
  - lib/railsdock/templates/install/memcached/memcached.env
@@ -274,7 +354,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
274
354
  - !ruby/object:Gem::Version
275
355
  version: '0'
276
356
  requirements: []
277
- rubygems_version: 3.0.3
357
+ rubygems_version: 3.1.3
278
358
  signing_key:
279
359
  specification_version: 4
280
360
  summary: Docker-ize your Rails project.
@@ -1,7 +0,0 @@
1
- version: '3.7'
2
-
3
- services:
4
- rails:
5
- volumes:
6
- - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}:cached
7
- - node_modules:${APP_CODE_PATH_CONTAINER}/node_modules:cached