forked from rails/rails
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Generate a .devcontainer folder and its contents when creating a new …
…app. The devcontainer folder includes everything needed to boot the app and do development in a remote container. The container setup includes: - A redis container for Sidekiq and Action Cable - A database (SQLite, Postgres, MySQL or MariaDB) - A Headless chrome container for system tests - Active Storage configured to use the local disk and with preview features working If any of these options are skipped in the app setup they will not be included in the container configuration. Co-authored-by: Rafael Mendonça França <rafael@franca.dev>
- Loading branch information
1 parent
1dfb1d4
commit a60e8f5
Showing
7 changed files
with
318 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
14 changes: 14 additions & 0 deletions
14
railties/lib/rails/generators/rails/app/templates/.devcontainer/Dockerfile.tt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
FROM mcr.microsoft.com/devcontainers/ruby:1-3-bookworm | ||
|
||
<%- unless options.skip_active_storage -%> | ||
# Install packages needed to build gems | ||
RUN apt-get update -qq && \ | ||
apt-get install --no-install-recommends -y \ | ||
libvips \ | ||
# For video thumbnails | ||
ffmpeg \ | ||
# For pdf thumbnails. If you want to use mupdf instead of poppler, | ||
# you can install the following packages instead: | ||
# mupdf mupdf-tools | ||
poppler-utils | ||
<%- end -%> |
49 changes: 49 additions & 0 deletions
49
railties/lib/rails/generators/rails/app/templates/.devcontainer/devcontainer.json.tt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
// For format details, see https://aka.ms/devcontainer.json. For config options, see the | ||
// README at: https://github.com/devcontainers/templates/tree/main/src/ruby | ||
{ | ||
"name": "Ruby", | ||
"dockerComposeFile": "docker-compose.yml", | ||
"service": "rails-app", | ||
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}", | ||
|
||
// Features to add to the dev container. More info: https://containers.dev/features. | ||
"features": { | ||
"ghcr.io/devcontainers/features/github-cli:1": {} | ||
}, | ||
|
||
"containerEnv": { | ||
<%- if depends_on_system_test? -%> | ||
"CAPYBARA_SERVER_PORT": "45678", | ||
<%- end -%> | ||
<%- unless options.skip_active_job? -%> | ||
"JOBS_REDIS_URL": "redis://redis:6379/1", | ||
<%- end -%> | ||
<%- unless options.skip_action_cable? -%> | ||
"CABLE_REDIS_URL": "redis://redis:6379/1", | ||
<%- end -%> | ||
<%- if options.database == "postgresql" -%> | ||
"RAILS_DATABASE_HOST": "postgres", | ||
<%- end -%> | ||
<%- if options.database == "mysql" -%> | ||
"RAILS_DATABASE_HOST": "mysql", | ||
<%- end -%> | ||
<%- if options.database == "trilogy" -%> | ||
"RAILS_DATABASE_HOST": "mariadb", | ||
<%- end -%> | ||
}, | ||
|
||
// Features to add to the dev container. More info: https://containers.dev/features. | ||
// "features": {}, | ||
|
||
// Use 'forwardPorts' to make a list of ports inside the container available locally. | ||
// "forwardPorts": [], | ||
|
||
// Use 'postCreateCommand' to run commands after the container is created. | ||
"postCreateCommand": "bin/setup" | ||
|
||
// Configure tool-specific properties. | ||
// "customizations": {}, | ||
|
||
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. | ||
// "remoteUser": "root" | ||
} |
78 changes: 78 additions & 0 deletions
78
railties/lib/rails/generators/rails/app/templates/.devcontainer/docker-compose.yml.tt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
services: | ||
rails-app: | ||
build: | ||
context: .. | ||
dockerfile: .devcontainer/Dockerfile | ||
|
||
volumes: | ||
- ../..:/workspaces:cached | ||
|
||
# Overrides default command so things don't shut down after the process ends. | ||
command: sleep infinity | ||
|
||
networks: | ||
- default | ||
|
||
# Uncomment the next line to use a non-root user for all processes. | ||
# user: vscode | ||
|
||
# Use "forwardPorts" in **devcontainer.json** to forward an app port locally. | ||
# (Adding the "ports" property to this file will not forward from a Codespace.) | ||
ports: | ||
- 45678:45678 | ||
<%- if !devcontainer_dependencies.empty? -%> | ||
depends_on: | ||
<%- devcontainer_dependencies.each do |dependency| -%> | ||
- <%= dependency %> | ||
<%- end -%> | ||
<%- end -%> | ||
|
||
<%- if depends_on_system_test? -%> | ||
selenium: | ||
image: seleniarm/standalone-chromium | ||
restart: unless-stopped | ||
networks: | ||
- default | ||
<%- end -%> | ||
|
||
<%- unless options.skip_active_job? && options.skip_action_cable? -%> | ||
redis: | ||
image: redis:7.2 | ||
restart: unless-stopped | ||
networks: | ||
- default | ||
ports: | ||
- 6379:6379 | ||
<%- end -%> | ||
|
||
<%- if options.database == "postgresql" -%> | ||
postgres: | ||
image: postgres:16.1 | ||
restart: unless-stopped | ||
networks: | ||
- default | ||
environment: | ||
POSTGRES_USER: postgres | ||
POSTGRES_PASSWORD: postgres | ||
<%- end -%> | ||
|
||
<%- if options.database == "mysql" -%> | ||
mysql: | ||
image: mysql/mysql-server:8.0 | ||
restart: unless-stopped | ||
environment: | ||
MYSQL_ALLOW_EMPTY_PASSWORD: true | ||
MYSQL_ROOT_HOST: "%" | ||
networks: | ||
- default | ||
<%- end -%> | ||
|
||
<%- if options.database == "trilogy" -%> | ||
mariadb: | ||
image: mariadb:10.5 | ||
restart: unless-stopped | ||
networks: | ||
- default | ||
environment: | ||
MARIADB_ALLOW_EMPTY_ROOT_PASSWORD: true | ||
<%- end -%> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters