💻
Ruby 3.1 と Rails 7 のプロジェクトを Docker内で作成してみる
必要なもの
- Docker
- Visual Studio Code
- Remote Development 拡張機能
Docker ファイル作成
VS Code で空のフォルダー(rails7)を作成して開き書き内容の Dockerfile を作成
Dockerfile
FROM ruby:3.1
Docker コンテナーを開く
コマンドパレットで Remote Container: Reopen in Container を選択し、From 'Dockerfile' を選択
ruby バージョンの確認
terminal(container)
# ruby -v
ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [x86_64-linux]
rails をインストール
terminal(container)
# gem install rails
rails バージョンの確認
terminal(container)
# rails -v
Rails 7.0.1
rails プロジェクトを作成
最小限のモジュールのみでAPIモードで作成してみます
terminal(container)
rails new –-minimal --api .
起動
terminal(container)
rails s
ブラウザで起動しているのを確認
todos API作成
terminal(container)
# rails g scaffold todo title:string done:boolean
this noun before running the generator.
invoke active_record
create db/migrate/20220114053127_create_todos.rb
create app/models/todo.rb
invoke test_unit
create test/models/todo_test.rb
create test/fixtures/todos.yml
invoke resource_route
route resources :todos
invoke scaffold_controller
create app/controllers/todos_controller.rb
invoke resource_route
invoke test_unit
create test/controllers/todos_controller_test.rb
terminal(container)
# rails db:migrate
== 20220114053127 CreateTodos: migrating ======================================
-- create_table(:todos)
-> 0.0084s
== 20220114053127 CreateTodos: migrated (0.0085s) =============================
テスト実行
terminal(container)
# rails test
Running 5 tests in a single process (parallelization threshold is 50)
Run options: --seed 29841
# Running:
.....
Finished in 0.384882s, 12.9910 runs/s, 18.1874 assertions/s.
5 runs, 7 assertions, 0 failures, 0 errors, 0 skips
デプロイ用に Dockerfile を修正
Dockerfile
FROM ruby:3.1
WORKDIR /workspaces/rails7
COPY Gemfile* /workspaces/rails7
RUN bundle install
COPY . /workspaces/rails7
CMD rails s -b 0.0.0.0
Docker イメージ作成
terminal(local)
% docker build -t rails7 .
Docker イメージを起動
terminal(local)
% docker run -p 3000:3000 rails7
=> Booting Puma
=> Rails 7.0.1 application starting in development
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 5.5.2 (ruby 3.1.0-p0) ("Zawgyi")
* Min threads: 5
* Max threads: 5
* Environment: development
* PID: 8
* Listening on http://0.0.0.0:3000
Use Ctrl-C to stop
以上
Discussion