はじめに
今まではdevcontainerの環境を作ってから、そこにrails newしたりしていました。
今回は、すでにあるアプリをdevcontainer化する方法を紹介するのと、とても簡単な方法を見つけたので前回の記事の改良版です。
手順
-
コンテナーで再度開く
みたいな欄があると思うのでそこを押してください。 -
次のダイアログで
ワークスペースに構成を追加する
を選択することで、リポジトリに設定ファイルを追加して他の開発者と同じ環境を共有することができます。
ちなみに、ユーザーデータフォルダーに構成を追加する
を選択すると設定ファイルはリポジトリに追加されず、ローカルでのみ Dev Containers を利用できるらしいです。
- 次にベースとなるテンプレートを選択します。
今回は、Ruby on Rails & Postgres
を選びました。
各テンプレートでは開発環境や OS のバージョンなどを追加で指定できる場合もあります。
最後に追加でインストールするソフトウェアなどを選択します(Features と呼ばれます)。Features には Docker-in-Docker を実現するものや ruby などの開発環境をインストールするものなど様々なものがあるります。ちなみに、今回は入れませんでした。(使い方がよく分からず、消しました。)
- Features の選択後、しばらく待っていればコンテナが立ち上がり、開発を開始できます。Dev Containers 環境を正しく構築できた場合、以下のように左下の
><
に開発コンテナー: *
という表示が追加されているはずです。
一旦ここまでで、devcontainer自体は完成しました。
詰まったこととか
rubyのバージョンの話
前述した方法は、最新のバージョンに合わせて自動でファイルが作られます。
ですが、今回は気分的に ruby 3.1.2に合わせたかったので、いろいろ変更する必要がありました。
https://mcr.microsoft.com/v2/devcontainers/ruby/tags/list
恐らくここに載ってるタグは、簡単に設定できると思います。
- 解決策
GemfileのほうのRubyバージョン指定を
ruby '3.1.2' (3.1.2指定)
から
ruby '~> 3.1.0' (3.1.xならOK)
に変更しました。
Railsが消えちゃった話
rails が突如として消えました。(何故か、よく消える...)
- 解決策
bundler installしたら上手く行きました。
DockerにNode.jsとか入れてあげた話
Could not find a JavaScript runtime.
javascript runtimeってなんやろ。
Rails 7.0正式リリース、Node.js不要のフロントエンド開発環境がデフォルトに
Rails7.0以外には、node.js いるんか〜
Railsサーバー起動時の『Could not find a JavaScript runtime』エラー対応方法
この辺りの記事を参考に
- 解決策
dockerfileに以下の文を追記
# JavaScriptの依存関係をインストール
RUN yarn install --check-files
なんか知らんけど、いけた!🙌