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: There are also examples Rails 8 and Rails 6 applications working in Docker
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
cp .env.example .env
docker compose build
docker compose run --rm web bin/rails db:setup
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 update
docker compose up --build
(adjust tags as needed)
DOCKER_BUILDKIT=1 docker build --tag rails-on-docker --load .
Test the image can be used and Rails starts up, use a fake key for testing purposes only:
docker run --rm --env SECRET_KEY_BASE=dummy rails-on-docker
docker build --tag rails-on-docker .
Test the image can be used and Rails starts up, use a fake key for testing purposes only:
docker run --rm --env SECRET_KEY_BASE=dummy rails-on-docker
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.
Ryan Williams