Rails6 on Dockerの環境構築 - Yarnのバージョン指定
Rails6 on Dockerの環境構築 - hvystnの日記
Rails6 on Dockerの環境構築 - Dockerイメージのバージョン指定 - hvystnの日記
Rails6 on Dockerの環境構築 - Node.jsのバージョン指定 - hvystnの日記
上記の記事でRails6の環境構築、PostgreSQL、Node.jsのバージョン指定を実施しました。
今回はStable versionをインストールしていたYarnのバージョンを指定してみます。
バージョン指定の必要性については以前の記事に記載していますので、ご参照ください。
どうやってYarnのバージョンを指定する方法を見つけますか?
いつも通り、公式サイトを確認してみます。
install#debian-stable | Yarn
しかし、Debianでのインストールページには特にバージョンを指定する方法は見当たりませんでした。
他のページで、代替手段というページを見つけました。
install#alternatives-stable | Yarn
ここに、公式が作成しているインストールスクリプトがあり、こちらを使うとバージョン指定をしてインストールできるようです。
早速Dockerfileを修正して、イメージを削除して初めから実施してみました。
RUN curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.22.5 \ && curl -sL https://deb.nodesource.com/setup_12.x | bash - \ && apt-get update -qq && apt-get install -y nodejs postgresql-client
しかし、実行してみると下記エラーメッセージが表示されました。
Step 2/13 : RUN curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.22.5 && curl -sL https://deb.nodesource.com/setup_12.x | bash - && apt-get update -qq && apt-get install -y nodejs postgresql-client ---> Running in 4d9819f5b89b % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 54 100 54 0 0 159 0 --:--:-- --:--:-- --:--:-- 159 100 7152 100 7152 0 0 9460 0 --:--:-- --:--:-- --:--:-- 9460 Installing Yarn! > Downloading tarball... [1/2]: https://yarnpkg.com/downloads/1.22.5/yarn-v1.22.5.tar.gz --> /tmp/yarn.tar.gz.DzI01qASJH % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 80 100 80 0 0 256 0 --:--:-- --:--:-- --:--:-- 256 100 93 100 93 0 0 148 0 --:--:-- --:--:-- --:--:-- 148 100 643 100 643 0 0 805 0 --:--:-- --:--:-- --:--:-- 805 100 1215k 100 1215k 0 0 424k 0 0:00:02 0:00:02 --:--:-- 745k [2/2]: https://yarnpkg.com/downloads/1.22.5/yarn-v1.22.5.tar.gz.asc --> /tmp/yarn.tar.gz.DzI01qASJH.asc 100 84 100 84 0 0 272 0 --:--:-- --:--:-- --:--:-- 272 100 97 100 97 0 0 238 0 --:--:-- --:--:-- --:--:-- 97000 100 647 100 647 0 0 1444 0 --:--:-- --:--:-- --:--:-- 1444 100 832 100 832 0 0 1264 0 --:--:-- --:--:-- --:--:-- 1264 > Verifying integrity... gpg: key 1646B01B86E50310: public key "Yarn Packaging <yarn@dan.cx>" imported gpg: Total number processed: 1 gpg: imported: 1 gpg: Signature made Thu Aug 27 11:16:49 2020 UTC gpg: using RSA key 6D98490C6F1ACDDD448E45954F77679369475BAA gpg: Good signature from "Yarn Packaging <yarn@dan.cx>" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: 72EC F46A 56B4 AD39 C907 BBB7 1646 B01B 86E5 0310 Subkey fingerprint: 6D98 490C 6F1A CDDD 448E 4595 4F77 6793 6947 5BAA > GPG signature looks good > Extracting to ~/.yarn... > Adding to $PATH... > We've added the following to your /root/.bashrc > If this isn't the profile of your current shell then please add the following to your correct profile: export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH" Yarn requires Node.js 4.0 or higher to be installed. > Yarn was installed, but doesn't seem to be working :(. ERROR: Service 'web' failed to build: The command '/bin/sh -c curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.22.5 && curl -sL https://deb.nodesource.com/setup_12.x | bash - && apt-get update -qq && apt-get install -y nodejs postgresql-client' returned a non-zero code: 1
Yarn was installed, but doesn't seem to be working :(.
調査してみましたが、修正方法がわからなかったので、この方法は一旦保留にします :(
公式の代替手段ページにはtarball を使用する手動インストールという項目もありましたが、こちらにもバージョン指定の方法は記載されていませんでした。
他の方法を調査したところ、Qiitaの記事を見つけたので、こちらで実施してみます。
どうやってYarnのバージョンを指定してインストールしますか?
Yarnのバージョン指定した.debファイルをYarnのgithubから直接取得し、インストールをしているようです。
Releases · yarnpkg/yarn · GitHub
上記のページの該当ファイルでリンク先のアドレスをコピーすると、wgetで取得するURLと同じことが確認できます。
ちなみに、.debファイルはDebian, Ubuntu などの Linux で利用されるパッケージの拡張子であり、dpkgやaptコマンドでインストールできるようです。
kaworu.jpn.org
Yarnのバージョンは現在最新のv1.22.5にして、Dockerfileを修正します。
RUN wget https://github.com/yarnpkg/yarn/releases/download/v1.22.5/yarn_1.22.5_all.deb \ && dpkg -i yarn_1.22.5_all.deb \ && rm yarn_1.22.5_all.deb \ && curl -sL https://deb.nodesource.com/setup_12.x | bash - \ && apt-get update -qq && apt-get install -y nodejs postgresql-client
[update]Yarn version to fix · heavy-stone/rails6-docker@7d0f5fd · GitHub
ダウンロードしたファイルはYarnをインストール後に削除するので、rmコマンドを追加しています。
一から作り直すので、プロジェクトやDockerイメージも削除して最初から実施します。
$ docker-compose run web rails new . --force --no-deps --database=postgresql database.yml修正 $ docker-compose build $ docker-compose run web rake db:create
作り直しで、いくつかgemに差分が出ましたが、Rails6のデフォルトページの表示確認までできました。
apt-cache policyコマンドで1.22.5のyarnがインストールされていることも確認できました。
まとめ
Yarnをバージョン指定してインストールする方法を実施しました。
参考
今後の課題
Rails6 on Dockerの環境構築 - Node.jsのバージョン指定
Rails6 on Dockerの環境構築 - hvystnの日記
Rails6 on Dockerの環境構築 - Dockerイメージのバージョン指定 - hvystnの日記
上記の2つの記事でRails6の環境構築と、PostgreSQLのバージョン指定を実施しました。
今回はRails6の環境構築時にインストールしていたNodejsのバージョンも指定してみます。
Node.jsのインストールは方法はどこでわかりますか?
Node.js公式ページにアクセスし、インストール方法を確認します。
下記順番にクリックしていきます。
ダウンロード>
パッケージマネージャを使用したダウンロード>
Debian と Ubuntu ベースの Linux ディストリビューション、エンタープライズ Linux/Fedora と Snap パッケージ
ここに「Node.js 公式のバイナリディストリビューションが NodeSource によって提供されています。」との文言があり、こちらもリンクになっているので、クリックします。
するとGithubのページに飛ばされれます。
Node.jsのソースコードはここで管理されているようです。
READMEを読むと、Debian and Ubuntu based distributions (deb)>Installation instructionsにインストール方法が記載されていますので、こちらに従ってインストールを実施していきます。
Node.jsのバージョンはどれを使用しますか?
Node.jsにはいくつかバージョンがありますが、現状LTSとなっているバージョン12.xにしたいと思います。
LTSについてはLTS、STSとはを参照してください。
そもそも、現状はapt-get install nodejsでNode.jsをインストールしていましたが、どのバージョンが入っているのか調べてみました。
apt-cache policyコマンドでapt-getによってインストールされる予定のイメージやインストール済みのイメージを確認できるそうです。
$ docker-compose exec web bash root@1d81f8131ca3:/myapp# apt-cache policy nodejs nodejs: Installed: 10.21.0~dfsg-1~deb10u1 Candidate: 10.21.0~dfsg-1~deb10u1 Version table: *** 10.21.0~dfsg-1~deb10u1 500 500 http://deb.debian.org/debian buster/main amd64 Packages 500 http://security.debian.org/debian-security buster/updates/main amd64 Packages 100 /var/lib/dpkg/status
Installedがインストール済みのバージョンなので、Node.jsのv10.xがインストールされているようです。
上記の例ではVersion tableに記載されているバージョンは一つですが、他のパッケージではVersion tableには複数バージョンの取得先が記載されることもあり、そのtableの中のバージョン一つをCandidateとして指定し、apt-get installコマンドでそのバージョンのパッケージをインストールするようです。
同様にNode.jsのInstallationでも、Version tableに新しいバージョンを追加し、Candidateを書き換えて、インストールするバージョンを変更するようです。
GithubのNode.jsのREADME>Installation instructions>Node.js v12.x:に従い、実際に進めていきます。
ちなみに、Node.js LTS (v12.x):の項目もありますが、Node.js v12.x:の方で進めます。
なぜ、Node.js LTS (v12.x):ではなく、Node.js v12.x:を選択しますか?
この理由は、前回のDockerイメージのバージョン指定の必要性で記載した理由と同じです。
Node.js LTSのバージョンは今でこそv12.xですが、Node.jsの開発が進むとv14.xやv16.xに変更される可能性があります。
Node.jsがv12.xでうまく動いていたのに、LTSの付け替えでv14.xをインストールしてしまい、Rails6が動かなくなるという可能性がありますので、Node.jsのバージョンはv12.xに固定したいと思います。
よってNode.js LTS (v12.x):ではなく、Node.js v12.x:の項目に従い、インストールを進めます。
Node.js v12.xのインストールはどのように実施しますか?
Rails6用のrubyイメージのOSはDebianなので、Node.js v12.x:># Using Debian, as rootのコマンドを実施します。
今回、Dockerfileにコマンドを記載する前に、手動でインストールする方法を試してみます。
$ docker-compose exec web bash root@d4b3b0f7947f:/myapp# curl -sL https://deb.nodesource.com/setup_12.x | bash - ## Installing the NodeSource Node.js 12.x repo... ## Populating apt-get cache... + apt-get update Hit:1 http://deb.debian.org/debian buster InRelease Get:2 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB] Get:3 http://deb.debian.org/debian buster-updates InRelease [51.9 kB] Hit:4 https://dl.yarnpkg.com/debian stable InRelease Get:5 http://security.debian.org/debian-security buster/updates/main amd64 Packages [224 kB] Fetched 341 kB in 1s (399 kB/s) Reading package lists... Done ## Confirming "buster" is supported... + curl -sLf -o /dev/null 'https://deb.nodesource.com/node_12.x/dists/buster/Release' ## Adding the NodeSource signing key to your keyring... + curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - OK ## Creating apt sources list file for the NodeSource Node.js 12.x repo... + echo 'deb https://deb.nodesource.com/node_12.x buster main' > /etc/apt/sources.list.d/nodesource.list + echo 'deb-src https://deb.nodesource.com/node_12.x buster main' >> /etc/apt/sources.list.d/nodesource.list ## Running `apt-get update` for you... + apt-get update Hit:1 http://deb.debian.org/debian buster InRelease Hit:2 http://security.debian.org/debian-security buster/updates InRelease Hit:3 http://deb.debian.org/debian buster-updates InRelease Hit:4 https://dl.yarnpkg.com/debian stable InRelease Get:5 https://deb.nodesource.com/node_12.x buster InRelease [4584 B] Get:6 https://deb.nodesource.com/node_12.x buster/main amd64 Packages [767 B] Fetched 5351 B in 1s (3640 B/s) Reading package lists... Done ## Run `sudo apt-get install -y nodejs` to install Node.js 12.x and npm ## You may also need development tools to build native addons: sudo apt-get install gcc g++ make ## To install the Yarn package manager, run: curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get update && sudo apt-get install yarn
今気づきましたが、Yarnのインストール方法もここに記載されてるんですね〜親切ですね!
apt-cache policyでCandidateが変更されたか確認します。
root@d4b3b0f7947f:/myapp# apt-cache policy nodejs nodejs: Installed: 10.21.0~dfsg-1~deb10u1 Candidate: 12.18.3-1nodesource1 Version table: 12.18.3-1nodesource1 500 500 https://deb.nodesource.com/node_12.x buster/main amd64 Packages *** 10.21.0~dfsg-1~deb10u1 500 500 http://deb.debian.org/debian buster/main amd64 Packages 500 http://security.debian.org/debian-security buster/updates/main amd64 Packages 100 /var/lib/dpkg/status root@d4b3b0f7947f:/myapp#
ちゃんとv12.xに変更されていることが確認できました。
インストールもして、再度確認してみます。
root@d4b3b0f7947f:/myapp# apt-get install -y nodejs Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: libbrotli1 libc-ares2 libuv1 nodejs-doc Use 'apt autoremove' to remove them. The following packages will be REMOVED: libnode64 The following packages will be upgraded: nodejs 1 upgraded, 0 newly installed, 1 to remove and 2 not upgraded. Need to get 18.2 MB of archives. After this operation, 69.3 MB of additional disk space will be used. Get:1 https://deb.nodesource.com/node_12.x buster/main amd64 nodejs amd64 12.18.3-1nodesource1 [18.2 MB] Fetched 18.2 MB in 3s (7145 kB/s) debconf: delaying package configuration, since apt-utils is not installed dpkg: libnode64:amd64: dependency problems, but removing anyway as you requested: nodejs depends on libnode64 (= 10.21.0~dfsg-1~deb10u1). (Reading database ... 24492 files and directories currently installed.) Removing libnode64:amd64 (10.21.0~dfsg-1~deb10u1) ... (Reading database ... 24485 files and directories currently installed.) Preparing to unpack .../nodejs_12.18.3-1nodesource1_amd64.deb ... Unpacking nodejs (12.18.3-1nodesource1) over (10.21.0~dfsg-1~deb10u1) ... Setting up nodejs (12.18.3-1nodesource1) ... Processing triggers for libc-bin (2.28-10) ... root@d4b3b0f7947f:/myapp# apt-cache policy nodejs nodejs: Installed: 12.18.3-1nodesource1 Candidate: 12.18.3-1nodesource1 Version table: *** 12.18.3-1nodesource1 500 500 https://deb.nodesource.com/node_12.x buster/main amd64 Packages 100 /var/lib/dpkg/status 10.21.0~dfsg-1~deb10u1 500 500 http://deb.debian.org/debian buster/main amd64 Packages 500 http://security.debian.org/debian-security buster/updates/main amd64 Packages root@d4b3b0f7947f:/myapp# nodejs --version v12.18.3
Installedがv12.xに変更され、nodejs --versionコマンドでもv12.xがインストールされていることを確認できました。
この手順で問題ないようですので、上記の手順をDockerfileに追加します。
[update]nodejs version to fix · heavy-stone/rails6-docker@5dbf44a · GitHub
一から作り直すので、プロジェクトやDockerイメージも削除して最初から実施します。
$ docker-compose run web rails new . --force --no-deps --database=postgresql database.yml修正 $ docker-compose build $ docker-compose run web rake db:create
作り直しで、いくつかgemに差分が出ましたが、Rails6のデフォルトページの表示確認までできました。
apt-cache policyコマンドでv12.xのnode.jsがインストールされていることも確認できました。
まとめ
Node.jsをバージョン指定してインストールする方法を実施しました。
参考
今後の課題
・バージョン指定は大切と言いながら、YarnはStable versionを使用しており、バージョン指定できてなかった。。
Rails6 on Dockerの環境構築 - Dockerイメージのバージョン指定
hvystn.hatenablog.com
こちらの記事でDockerの公式Quickstartに従い、最低限のRails6の環境を構築しました。
今回はDBとして使用しているPostgreSQLイメージのバージョンを指定します。
なぜDockerイメージのバージョン指定をする必要がありますか?
手を動かす前に、なぜイメージのバージョン指定をするのか、その必要性を考えてみました。
If no tag is provided, Docker Engine uses the :latest tag as a default.
docker pull | Docker Documentation
公式によると、タグがない場合はデフォルトでlatestタグがついたイメージをpullするようです。
今のPostgreSQLのimege設定がちょうどこの状態です。
latestタグでの運用だと不具合がありますか?
実際にlatestタグ運用で不具合があるか調べてみました。
別の作業中、管理画面の表示がおかしくなっているという話が出てきた。 そこで調べてもらったところ、なぜかリリースしたはずの機能が正常に機能していない、という連絡を受けた。 また、影響範囲としてはデータの欠損が発生しているようだということも分かった。
検索方法が悪かったのか不具合についての記事は意外と出てこなったのですが、これは恐怖ですね。。
latestタグとは何でしょうか?
latestタグはその名の通り、latestというただのタグです。
latestイメージというのはlatestタグが付いたイメージのことです。
タグはイメージに紐付けられますが、イメージの管理者がタグの付け替えを行うことができます。
以前はバージョン6.xのイメージにlatestタグが紐付けられていたが、アップデートで8.xにlatestタグが付け替えられ、それを知らずにpullしてバージョン違いのイメージでコンテナを起動してしまうと、上記のような不具合につながる可能性がある、だからlatestタグ運用は危険ということだと思います。
また、AWSのECRではlatestタグを使用できないようにする設定もあるようです。
コンテナ化したアプリケーションを管理するKubernetesの公式ドキュメントにも注意書きがあります。
Note: You should avoid using the :latest tag when deploying containers in production as it is harder to track which version of the image is running and more difficult to roll back properly.
イメージのバージョン追跡が困難になり、ロールバックができなくなるので、本番環境ではlatestタグの使用を避けるべきとのことです。
Dockerイメージのバージョンはどのように指定しますか?
When pulling an image by digest, you specify exactly which version of an image to pull. Doing so, allows you to “pin” an image to that version, and guarantee that the image you’re using is always the same.
docker pull | Docker Documentation
Docker公式によるとdigest(タグ)でプルするイメージのバージョンを正確に指定することで、そのバージョンにイメージを「固定」し、使用しているイメージが常に同じであることを保証できるようになるそうです。
Docker HUBのページでPostgreSQLのタグを確認してましょう。
現在、latestタグはバージョン12.4に紐付いているようです。
実際にpullされたPostgreSQLのバージョンをローカルでも確認しましたが、12.4でした。
root@6007495537a6:/# psql --version psql (PostgreSQL) 12.4 (Debian 12.4-1.pgdg100+1)
docker-compose.ymlのイメージ定義部分を変更します。
[update]PostgreSQL version to fix · heavy-stone/rails6-docker@e420242 · GitHub
image: postgres ↓ image: postgres:12.4
Dockerのlatestタグが付いたイメージを削除し、docker-compose upを実行すると、12.4のPostgreSQLイメージをpullしてくれました。
$ docker-compose up Creating network "rails6-docker_default" with the default driver Pulling db (postgres:12.4)... 12.4: Pulling from library/postgres ...
http://localhost:3000/ にブラウザでアクセスし、Rails6のページも確認できました。
これでPostgreSQLのバージョン指定が完了しました。
まとめ
Dockerイメージのバージョン指定の必要性について調査しました。
PostgreSQLのイメージバージョンを固定しました。
実はバージョン指定できていなのがもう一つあるので、今度はNode.jsのバージョン指定をしていきたいと思っています。
参考
Rails6 on Dockerの環境構築
Docker公式のQuickstart: Compose and Railsに従い、Rails6バージョンの環境構築を目指します。
docs.docker.com
Railsは6.0.3、Rubyは2.7.1と現在リリースされている比較的新しいバージョンを導入します。
早速、Define the projectに従ってファイルを作成します。
[add]original setup file from docker docs · heavy-stone/rails6-docker@59d2519 · GitHub
RailsとRubyのバージョンを変更します。
[update]Rails & Ruby versions · heavy-stone/rails6-docker@310ce26 · GitHub
Build the projectのRails newコマンドを実施しますが、webpacker: installでエラーが発生します。
$ docker-compose run web rails new . --force --no-deps --database=postgresql ... rails webpacker:install Yarn not installed. Please download and install Yarn from https://yarnpkg.com/lang/en/docs/install/ ...
エラーメッセージにYarnがインストールされていないとあるので、Yarnをインストールするパッケージに加えます。
[add]yarn to install webpacker · heavy-stone/rails6-docker@35234c1 · GitHub
再度Rails newコマンドを実施しますが、またwebpacker: installでエラーが発生します。
$ docker-compose run web rails new . --force --no-deps --database=postgresql ... rails webpacker:install rails aborted! ArgumentError: Malformed version number string 0.32+git ...
エラーメッセージで調査すると、どうやらYarnのバージョンが不正なバージョン?のようです。
stackoverflow.com
apt-getでそのままYarnを指定してしまうと0.32+gitという変なバージョンが入ってしまうらしいです。
https://github.com/yarnpkg/yarn/releases?after=v1.1.0
また、上記yarnのreleaseを追ってみましたが、0.32のようなversionはありませんでした。謎です。
正しいYarnのバージョンを入れる必要があるため、Yarnの公式Installationに従い、Debian(docker rubyイメージのOS)のインストール方法をDockerfileに追記します。
[update]yarn to stable version · heavy-stone/rails6-docker@6728287 · GitHub
再度Rails newコマンドを実施しますが、先ほど追記したコマンドでエラーが発生します。
$ docker-compose run web rails new . --force --no-deps --database=postgresql Creating network "rails6-docker_default" with the default driver Creating rails6-docker_db_1 ... done Building web Step 1/15 : FROM ruby:2.7.1 ---> 958d3491c09a Step 2/15 : RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - ---> Running in 9162346e0243 /bin/sh: 1: sudo: not found curl: (23) Failed writing body (629 != 1369) ERROR: Service 'web' failed to build: The command '/bin/sh -c curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -' returned a non-zero code: 127
エラーメッセージによると、sudoコマンドがないようです。
調査したところ、そもそもdockerのデフォルトユーザーがrootのため、sudoは必要ないようです。
stackoverflow.com
https://docs.docker.com/engine/reference/run/#user
よって、sudoコマンドを削除します。
[fix]removing sudo from yarn installation · heavy-stone/rails6-docker@b04e163 · GitHub
また、Dockerfile 記述のベストプラクティスによると、DockerはRUNコマンド毎にレイヤーを作成し、レイヤー毎にキャッシュを作成するので、関連性のあるコマンドは一つのRUNコマンドに&&を使用してまとめるべしとあります。
matsuand.github.io
よって、パッケージ関連のapt-getコマンドは一つのRUNコマンドにまとめてしまいます。
[fix]yarn installation with && · heavy-stone/rails6-docker@ac18220 · GitHub
ここまで設定して、再度Rails newコマンドを実施します。
$ docker-compose run web rails new . --force --no-deps --database=postgresql ... run yarn add @rails/webpacker@4.3.0 from "." yarn add v1.22.5 ... Done in 97.47s. Webpacker successfully installed 🎉 🍰 ...
ちゃんとYarnのStable Version(1.22.5)が入っており、webpackerもインストールできたようです。
[do]docker-compose run web rails new . --force --no-deps --database=p… · heavy-stone/rails6-docker@b2f5258 · GitHub
Rails newで多くのファイルが作成されました。
Docker公式のQuickstartの途中でしたので、Build the projectに戻ります。
Rails newによってGemfileが更新されたので、イメージを再度ビルドする必要があるそうです。
$ docker-compose build
特に問題なく成功しました。
Docker公式のConnect the databaseを実施します。
RailsからPostgreSQLに接続する情報をdatabase.ymlに記載します。
[update]database.yml for pq · heavy-stone/rails6-docker@69a6f8d · GitHub
RailsとPostgreSQLをコンテナで起動します。
$ docker-compose up
DBを作成します。
$ docker-compose run web rake db:create
ブラウザで http://localhost:3000 にアクセスすると、Rails6のデフォルトページが表示されていることを確認できました。
まとめ
Docker公式のドキュメントに従い、最小限のRails6の環境構築を実施しました。
ロケール設定、クロック設定、ベストプラクティスの適用、Nodejsバージョン指定、DBをMySQLに変更、シェルによる自動環境構築化、Nuxt環境構築などまだまだやりたいことはあるので、少しずつ書いていきたいと思います。
参考
LTS、STSとは
LTS、STSについて調べる機会があったので、Wikipediaの概要部分を翻訳してみました。
長期サポート(Long-term support、 LTS)とは、コンピュータソフトウェアの安定したリリース(stable edition)が標準版(standard edition)よりも長い期間維持されるプロダクトライフサイクルの管理ポリシーのことです。この用語は、一般的にオープンソースソフトウェアにおいて、ソフトウェアの標準版よりも数ヶ月または数年長い期間サポートされるソフトウェア版を説明するものとして使用されます。
短期サポート(Short-term support、 STS)も、標準版のサポートポリシーとの違いを表す用語です。STSのライフサイクルは比較的短く、LTSからは省かれた新機能が提供されることがあります。(LTSでは安定性や互換性を損なう可能性を避けるため)
en.wikipedia.orgLTS、Standard、STSのそれぞれの特性を理解した上で、どのeditionを選択するか考えた方がいいですね。
また、Node.jsのLTSについて調べてみると、新しい発見がありました。
Every even-numbered major version will become an LTS release.
偶数ナンバーのメジャーバージョンは全てLTSになるそうです。
そう言われると、6.x、8.x、10.x、12.x、14.x とよく見るバージョンは偶数ばかりで、なるほどなと思いました。