-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Rails Docker Compose example #1
base: main
Are you sure you want to change the base?
Changes from 1 commit
886490d
bb1d3b7
a602a1c
0864d95
af59a4c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
defaults |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
.idea/* | ||
|
||
log/* | ||
node_modules/* | ||
|
||
.gitignore | ||
.ruby-version |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
POSTGRES_PASSWORD="really-good-password" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. the best |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# See https://git-scm.com/docs/gitattributes for more about git attribute files. | ||
|
||
# Mark the database schema as having been generated. | ||
db/schema.rb linguist-generated | ||
|
||
# Mark the yarn lockfile as having been generated. | ||
yarn.lock linguist-generated | ||
|
||
# Mark any vendored files as having been vendored. | ||
vendor/* linguist-vendored |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
# See https://help.github.com/articles/ignoring-files for more about ignoring files. | ||
# | ||
# If you find yourself ignoring temporary files generated by your text editor | ||
# or operating system, you probably want to add a global ignore instead: | ||
# git config --global core.excludesfile '~/.gitignore_global' | ||
|
||
# Ignore bundler config. | ||
/.bundle | ||
|
||
# Ignore the default SQLite database. | ||
/db/*.sqlite3 | ||
/db/*.sqlite3-* | ||
|
||
# Ignore all logfiles and tempfiles. | ||
/log/* | ||
/tmp/* | ||
!/log/.keep | ||
!/tmp/.keep | ||
|
||
# Ignore pidfiles, but keep the directory. | ||
/tmp/pids/* | ||
!/tmp/pids/ | ||
!/tmp/pids/.keep | ||
|
||
# Ignore uploaded files in development. | ||
/storage/* | ||
!/storage/.keep | ||
|
||
/public/assets | ||
.byebug_history | ||
|
||
# Ignore master key for decrypting credentials and more. | ||
/config/master.key | ||
|
||
/public/packs | ||
/public/packs-test | ||
/node_modules | ||
/yarn-error.log | ||
yarn-debug.log* | ||
.yarn-integrity |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
3.0.1 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
FROM ruby:3.0.1 | ||
|
||
RUN apt update -qq && apt install -y nodejs npm postgresql-client | ||
RUN npm install --global yarn | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Since this is meant to be a tutorial of sorts, would you be up for adding some comments for what the various lines do? I went this direction in the php example - what do you think? I know it's verbose but for someone totally new to Docker, it would be helpful to have a line-by-line explanation. |
||
|
||
WORKDIR /app | ||
|
||
COPY Gemfile Gemfile.lock /app/ | ||
RUN bundle install | ||
|
||
COPY package.json yarn.lock /app/ | ||
RUN yarn install --check-files | ||
|
||
COPY . /app | ||
|
||
RUN rails assets:precompile | ||
|
||
CMD ["bundle", "exec", "puma", "-C", "config/puma.rb"] |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
source 'https://rubygems.org' | ||
git_source(:github) { |repo| "https://github.com/#{repo}.git" } | ||
|
||
ruby '3.0.1' | ||
|
||
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails', branch: 'main' | ||
gem 'rails', '~> 6.1.3', '>= 6.1.3.2' | ||
|
||
# Use Puma as the app server | ||
gem 'puma', '~> 5.0' | ||
# Use SCSS for stylesheets | ||
gem 'sass-rails', '>= 6' | ||
# Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker | ||
gem 'webpacker', '~> 5.0' | ||
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks | ||
gem 'turbolinks', '~> 5' | ||
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder | ||
gem 'jbuilder', '~> 2.7' | ||
# Use Redis adapter to run Action Cable in production | ||
# gem 'redis', '~> 4.0' | ||
# Use Active Model has_secure_password | ||
# gem 'bcrypt', '~> 3.1.7' | ||
|
||
# Use Active Storage variant | ||
# gem 'image_processing', '~> 1.2' | ||
|
||
# Reduces boot times through caching; required in config/boot.rb | ||
gem 'bootsnap', '>= 1.4.4', require: false | ||
|
||
gem 'pg' | ||
|
||
|
||
group :development, :test do | ||
# Call 'byebug' anywhere in the code to stop execution and get a debugger console | ||
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] | ||
end | ||
|
||
group :development do | ||
# Access an interactive console on exception pages or by calling 'console' anywhere in the code. | ||
gem 'web-console', '>= 4.1.0' | ||
# Display performance information such as SQL time and flame graphs for each request in your browser. | ||
# Can be configured to work on production as well see: https://github.com/MiniProfiler/rack-mini-profiler/blob/master/README.md | ||
gem 'rack-mini-profiler', '~> 2.0' | ||
gem 'listen', '~> 3.3' | ||
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring | ||
gem 'spring' | ||
end | ||
|
||
group :test do | ||
# Adds support for Capybara system testing and selenium driver | ||
gem 'capybara', '>= 3.26' | ||
gem 'selenium-webdriver' | ||
# Easy installation and use of web drivers to run system tests with browsers | ||
gem 'webdrivers' | ||
end | ||
|
||
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem | ||
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,228 @@ | ||
GEM | ||
remote: https://rubygems.org/ | ||
specs: | ||
actioncable (6.1.3.2) | ||
actionpack (= 6.1.3.2) | ||
activesupport (= 6.1.3.2) | ||
nio4r (~> 2.0) | ||
websocket-driver (>= 0.6.1) | ||
actionmailbox (6.1.3.2) | ||
actionpack (= 6.1.3.2) | ||
activejob (= 6.1.3.2) | ||
activerecord (= 6.1.3.2) | ||
activestorage (= 6.1.3.2) | ||
activesupport (= 6.1.3.2) | ||
mail (>= 2.7.1) | ||
actionmailer (6.1.3.2) | ||
actionpack (= 6.1.3.2) | ||
actionview (= 6.1.3.2) | ||
activejob (= 6.1.3.2) | ||
activesupport (= 6.1.3.2) | ||
mail (~> 2.5, >= 2.5.4) | ||
rails-dom-testing (~> 2.0) | ||
actionpack (6.1.3.2) | ||
actionview (= 6.1.3.2) | ||
activesupport (= 6.1.3.2) | ||
rack (~> 2.0, >= 2.0.9) | ||
rack-test (>= 0.6.3) | ||
rails-dom-testing (~> 2.0) | ||
rails-html-sanitizer (~> 1.0, >= 1.2.0) | ||
actiontext (6.1.3.2) | ||
actionpack (= 6.1.3.2) | ||
activerecord (= 6.1.3.2) | ||
activestorage (= 6.1.3.2) | ||
activesupport (= 6.1.3.2) | ||
nokogiri (>= 1.8.5) | ||
actionview (6.1.3.2) | ||
activesupport (= 6.1.3.2) | ||
builder (~> 3.1) | ||
erubi (~> 1.4) | ||
rails-dom-testing (~> 2.0) | ||
rails-html-sanitizer (~> 1.1, >= 1.2.0) | ||
activejob (6.1.3.2) | ||
activesupport (= 6.1.3.2) | ||
globalid (>= 0.3.6) | ||
activemodel (6.1.3.2) | ||
activesupport (= 6.1.3.2) | ||
activerecord (6.1.3.2) | ||
activemodel (= 6.1.3.2) | ||
activesupport (= 6.1.3.2) | ||
activestorage (6.1.3.2) | ||
actionpack (= 6.1.3.2) | ||
activejob (= 6.1.3.2) | ||
activerecord (= 6.1.3.2) | ||
activesupport (= 6.1.3.2) | ||
marcel (~> 1.0.0) | ||
mini_mime (~> 1.0.2) | ||
activesupport (6.1.3.2) | ||
concurrent-ruby (~> 1.0, >= 1.0.2) | ||
i18n (>= 1.6, < 2) | ||
minitest (>= 5.1) | ||
tzinfo (~> 2.0) | ||
zeitwerk (~> 2.3) | ||
addressable (2.7.0) | ||
public_suffix (>= 2.0.2, < 5.0) | ||
bindex (0.8.1) | ||
bootsnap (1.7.5) | ||
msgpack (~> 1.0) | ||
builder (3.2.4) | ||
byebug (11.1.3) | ||
capybara (3.35.3) | ||
addressable | ||
mini_mime (>= 0.1.3) | ||
nokogiri (~> 1.8) | ||
rack (>= 1.6.0) | ||
rack-test (>= 0.6.3) | ||
regexp_parser (>= 1.5, < 3.0) | ||
xpath (~> 3.2) | ||
childprocess (3.0.0) | ||
concurrent-ruby (1.1.8) | ||
crass (1.0.6) | ||
erubi (1.10.0) | ||
ffi (1.15.0) | ||
globalid (0.4.2) | ||
activesupport (>= 4.2.0) | ||
i18n (1.8.10) | ||
concurrent-ruby (~> 1.0) | ||
jbuilder (2.11.2) | ||
activesupport (>= 5.0.0) | ||
listen (3.5.1) | ||
rb-fsevent (~> 0.10, >= 0.10.3) | ||
rb-inotify (~> 0.9, >= 0.9.10) | ||
loofah (2.9.1) | ||
crass (~> 1.0.2) | ||
nokogiri (>= 1.5.9) | ||
mail (2.7.1) | ||
mini_mime (>= 0.1.1) | ||
marcel (1.0.1) | ||
method_source (1.0.0) | ||
mini_mime (1.0.3) | ||
minitest (5.14.4) | ||
msgpack (1.4.2) | ||
nio4r (2.5.7) | ||
nokogiri (1.11.3-x86_64-darwin) | ||
racc (~> 1.4) | ||
nokogiri (1.11.3-x86_64-linux) | ||
racc (~> 1.4) | ||
pg (1.2.3) | ||
public_suffix (4.0.6) | ||
puma (5.3.1) | ||
nio4r (~> 2.0) | ||
racc (1.5.2) | ||
rack (2.2.3) | ||
rack-mini-profiler (2.3.2) | ||
rack (>= 1.2.0) | ||
rack-proxy (0.6.5) | ||
rack | ||
rack-test (1.1.0) | ||
rack (>= 1.0, < 3) | ||
rails (6.1.3.2) | ||
actioncable (= 6.1.3.2) | ||
actionmailbox (= 6.1.3.2) | ||
actionmailer (= 6.1.3.2) | ||
actionpack (= 6.1.3.2) | ||
actiontext (= 6.1.3.2) | ||
actionview (= 6.1.3.2) | ||
activejob (= 6.1.3.2) | ||
activemodel (= 6.1.3.2) | ||
activerecord (= 6.1.3.2) | ||
activestorage (= 6.1.3.2) | ||
activesupport (= 6.1.3.2) | ||
bundler (>= 1.15.0) | ||
railties (= 6.1.3.2) | ||
sprockets-rails (>= 2.0.0) | ||
rails-dom-testing (2.0.3) | ||
activesupport (>= 4.2.0) | ||
nokogiri (>= 1.6) | ||
rails-html-sanitizer (1.3.0) | ||
loofah (~> 2.3) | ||
railties (6.1.3.2) | ||
actionpack (= 6.1.3.2) | ||
activesupport (= 6.1.3.2) | ||
method_source | ||
rake (>= 0.8.7) | ||
thor (~> 1.0) | ||
rake (13.0.3) | ||
rb-fsevent (0.11.0) | ||
rb-inotify (0.10.1) | ||
ffi (~> 1.0) | ||
regexp_parser (2.1.1) | ||
rubyzip (2.3.0) | ||
sass-rails (6.0.0) | ||
sassc-rails (~> 2.1, >= 2.1.1) | ||
sassc (2.4.0) | ||
ffi (~> 1.9) | ||
sassc-rails (2.1.2) | ||
railties (>= 4.0.0) | ||
sassc (>= 2.0) | ||
sprockets (> 3.0) | ||
sprockets-rails | ||
tilt | ||
selenium-webdriver (3.142.7) | ||
childprocess (>= 0.5, < 4.0) | ||
rubyzip (>= 1.2.2) | ||
semantic_range (3.0.0) | ||
spring (2.1.1) | ||
sprockets (4.0.2) | ||
concurrent-ruby (~> 1.0) | ||
rack (> 1, < 3) | ||
sprockets-rails (3.2.2) | ||
actionpack (>= 4.0) | ||
activesupport (>= 4.0) | ||
sprockets (>= 3.0.0) | ||
thor (1.1.0) | ||
tilt (2.0.10) | ||
turbolinks (5.2.1) | ||
turbolinks-source (~> 5.2) | ||
turbolinks-source (5.2.0) | ||
tzinfo (2.0.4) | ||
concurrent-ruby (~> 1.0) | ||
web-console (4.1.0) | ||
actionview (>= 6.0.0) | ||
activemodel (>= 6.0.0) | ||
bindex (>= 0.4.0) | ||
railties (>= 6.0.0) | ||
webdrivers (4.6.0) | ||
nokogiri (~> 1.6) | ||
rubyzip (>= 1.3.0) | ||
selenium-webdriver (>= 3.0, < 4.0) | ||
webpacker (5.3.0) | ||
activesupport (>= 5.2) | ||
rack-proxy (>= 0.6.1) | ||
railties (>= 5.2) | ||
semantic_range (>= 2.3.0) | ||
websocket-driver (0.7.3) | ||
websocket-extensions (>= 0.1.0) | ||
websocket-extensions (0.1.5) | ||
xpath (3.2.0) | ||
nokogiri (~> 1.8) | ||
zeitwerk (2.4.2) | ||
|
||
PLATFORMS | ||
x86_64-darwin-20 | ||
x86_64-linux | ||
|
||
DEPENDENCIES | ||
bootsnap (>= 1.4.4) | ||
byebug | ||
capybara (>= 3.26) | ||
jbuilder (~> 2.7) | ||
listen (~> 3.3) | ||
pg | ||
puma (~> 5.0) | ||
rack-mini-profiler (~> 2.0) | ||
rails (~> 6.1.3, >= 6.1.3.2) | ||
sass-rails (>= 6) | ||
selenium-webdriver | ||
spring | ||
turbolinks (~> 5) | ||
tzinfo-data | ||
web-console (>= 4.1.0) | ||
webdrivers | ||
webpacker (~> 5.0) | ||
|
||
RUBY VERSION | ||
ruby 3.0.1p64 | ||
|
||
BUNDLED WITH | ||
2.2.15 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# RAILS DOCKER COMPOSE EXAMPLE | ||
|
||
- Run `docker compose up` | ||
- This builds entire system the first time it is ran | ||
- You would normally want an env vars file outside of the code repository, for convenience one is provided here in the project root `.env-vars` | ||
|
||
- In another terminal window run | ||
- `docker compose run web rails db:create` | ||
- `docker compose run web rails db:migrate` | ||
|
||
- If changes are made to `Gemfile`, `Dockerfile`, or `docker-compose.yml`, then run `docker compose build` to pull in those changes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you add a link to the rails example to line 4 of the readme? Also could we move the rails example to
./example-rails/
?