2024-10-19 21:23:46 -07:00
2024-06-09 09:42:10 -07:00
2024-09-07 15:55:22 -07:00
2021-09-26 14:41:38 -07:00
2021-09-26 14:41:38 -07:00
2024-08-11 23:15:59 -05:00
2024-05-04 09:49:45 -07:00
2021-09-26 14:41:38 -07:00
2022-04-24 23:01:16 -07:00
2021-12-06 16:03:36 -08:00
2022-05-19 18:26:29 +00:00
2021-11-13 17:23:06 -08:00
2022-09-17 16:31:20 -07:00
2024-10-12 11:46:55 -07:00
2024-09-07 15:42:37 -07:00
2024-09-07 15:42:37 -07:00
2024-09-07 15:42:37 -07:00
2024-09-07 15:46:03 -07:00
2022-04-24 22:36:59 -07:00
2022-04-24 22:36:59 -07:00
2024-10-12 11:46:55 -07:00
2022-08-21 15:23:42 -07:00

CI Docker

Start here: https://github.com/ryanwi/rails7-on-docker/generate

Rails 7 on Docker demo application

This app demonstrates Rails 7 with PostgreSQL, import maps, turbo, stimulus and hotwire, all running in Docker.

NOTE: There is also an example Rails 6 application working in Docker with Webpacker

Features

  • Rails 7
  • Ruby 3.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

Requirements

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

Initial setup

cp .env.example .env
docker compose build
docker compose run --rm web bin/rails db:setup

Running the Rails app

docker compose up

Running the Rails console

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

Running tests

docker compose run --rm web bin/rspec

Updating gems

docker compose run --rm web bundle update
docker compose up --build

Production build

(adjust tags as needed)

with BuildKit

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

With legacy builder (no BuildKit)

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

Deployment

This app can be hosted wherever Ruby is supported and PostgreSQL databases can be provisioned.

Render

Deploy to Render

NOTE: You will need to generate a production secret with bin/rails secret and set it as the SECRET_KEY_BASE environment variable.

Credits/References

Rails with Docker

Rails 7 with importmaps

Rails 7 with hotwire

Author

Ryan Williams

S
Description
No description provided
Readme 3.8 MiB
Languages
Ruby 60.4%
HTML 29.9%
JavaScript 3.2%
TSQL 3.1%
Dockerfile 2.2%
Other 1.2%