Start here: https://github.com/ryanwi/rails7-on-docker/generate
This app demonstrates Rails 7 with PostgreSQL, import maps, turbo, stimulus and hotwire, all running in Docker.
NOTE:
- Rails 7
- Ruby 3
- Dockerfile and Docker Compose configuration
- PostgreSQL database
- Redis
- GitHub Actions for
- tests
- Rubocop for linting
- Security checks with Brakeman and bundler-audit
- Building and testing of a production Docker image
- Dependabot for automated updates
-
This file is auto-generated by
./bin/rails stimulus:manifest:update
-
Run that command whenever you add a new controller or
create them with
./bin/rails generate stimulus controllerName
https://dev.to/jnchito/how-to-customize-devise-for-rails-70-and-turbo-ih
https://dev.to/aquadrehz/rails-70-demo-with-hotwire-and-tailwind-4b3d
Please ensure you are using Docker Compose V2.
This project relies on the docker compose
command, not the previous docker-compose
standalone program.
https://docs.docker.com/compose/#compose-v2-and-the-new-docker-compose-command
Check your docker compose version with:
$ docker compose version
# Docker Compose version v2.10.2
sudo chown -R $(whoami) ~/.docker
$ cp .env.example .env
DOCKER_BUILDKIT=1 docker build .
$ docker compose build
docker-compose up --scale db=1
# erros comusn no docker
# open /Users/axel/.docker/buildx/current: permission denied
# export DOCKER_BUILDKIT=0
# sudo chown -R $(whoami) ~/.docker
$ docker compose run --rm web bin/rails db:setup
$ docker-compose run --rm -e RAILS_ENV=development web bin/rails db:migrate
docker compose run --rm web bin/rails generate devise User
docker compose up
When the app is already running with docker-compose
up, attach to the container:
docker compose exec web bin/rails c
When no container running yet, start up a new one:
docker compose run --rm web bin/rails c
$ docker compose run --rm web bin/rspec
$ docker compose run --rm web bundle exec rspec spec/models/user_spec.rb
docker compose run --rm web bundle update
docker compose up --build
(adjust tags as needed)
with BuildKit
DOCKER_BUILDKIT=1 docker build --tag rails-on-docker --file production.Dockerfile . --load
docker build --tag rails-on-docker --file production.Dockerfile .
This app can be hosted wherever Ruby is supported and PostgreSQL databases can be provisioned.
NOTE: You will need to generate a production secret with bin/rails secret
and set it as the SECRET_KEY_BASE
environment variable.
- Quickstart: Compose and Rails
- Docker for Rails Developers Build, Ship, and Run Your Applications Everywhere
- Ruby on Whales: Dockerizing Ruby and Rails development
- Rails generator to produce Dockerfiles and related files
- docker init
- Rails 7.1 Dockerfile Generator Template
- Stimulus 3 + Turbo 7 = Hotwire 1.0
- Turbo 7
- Rails 7 will have three great answers to JavaScript in 2021+
- Hotwire Turbo Replacing Rails UJS
Ryan Williams