Canvas Sandbox(macOS) - eiichiromomma/CVMLAB GitHub Wiki

(Canvas) macOSでのSandbox

LMSのCanvasのSandbox作成。やることは簡単でスクリプト一発の筈だったのだが結構面倒だった。 gitとかの基本的なツールはあって当たり前なので省略するが

  • この手順はmacOS (Monterey)
  • doryが必要(Webサービスをlocal動作させる際,偽のFQDNをいい感じにmapしてくれるらしい)
  • docker諸々必要
  • mutagenが必要(dockerのバインドマウントを高速化)

あたりが条件

doryを入れる

brew install dory

Canvasのソースを拾ってくる

git clone https://github.com/instructure/canvas-lms.git
cd canvas-lms

依存アプリを入れて環境構築

ここの通りにDocker環境のセットアップを実行すると足りないものを指摘してくれるのだが,先に依存するアプリも入れてしまう

brew install mutagen-io/mutagen/mutagen
brew install mutagen-io/mutagen/mutagen-compose
./script/docker_dev_setup.sh --mutagen

Docker Desktopが無いと言われる

で,Docker Desktopをインストールしてあるのに無いと言われてコケるので script/common/utils/docker_desktop_setup.sh の最後の

function check_for_docker_desktop {
  if ! mdfind "kMDItemKind == 'Application'" |grep -qE 'Docker.app|Docker\ Desktop.app'; then
    echo "  Docker Desktop is not installed!"
    echo "  Refer to https://docs.docker.com/docker-for-mac/install/ for help installing."
    echo "  Once Docker Desktop is installed rerun this script."
    exit 1
  fi
}

のexit 1を消す泥縄で対応。(エラーになっても終了させない)

またコケるが再度実行すると通る

その後コケるが,docker_dev_setup.logを見ても↓のような感じで原因不明だが,もう一度実行すると何故かエラーなく通る

Gem files will remain installed in /home/docker/.gem/gems/ruby-debug-ide-0.7.2
for inspection.
Results logged to
/home/docker/.gem/extensions/x86_64-linux/2.7.0/ruby-debug-ide-0.7.2/gem_make.out

An error occurred while installing ruby-debug-ide (0.7.2), and Bundler cannot
continue.
Make sure that `gem install ruby-debug-ide -v '0.7.2' --source
'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  ruby-debug-ide
  /o\ Something went wrong. Check /xxxxxxxxx/sandbox/canvas-lms/log/docker_dev_setup.log for details.

ということでもう一度実行

./script/docker_dev_setup.sh --mutagen

今度はセットアップが完了する。

mutagen-compose up

mutagen-composeでupする(ちなみにupで開始だからdownとやるとcontainersが全部消える)。

mutagen-compose up

で,暫く待ってるとwebpack_1からのログが終わってjobs_1からのログが流れるので,ブラウザで http://canvas.dockerを開くとCanvasのログイン画面になれば順調。

Canvasのアカウント作成

この状態だとアカウントが無い状態なのでcontainerの中のrailsでアカウントを作成する。

docker ps

で確認してIMAGEがcanvas-lms_webのNAMESを見る(たぶんcanvas-lms_web_1)。

docker exec -u 0 -it canvas-lms_web_1 /bin/bash

でコンテナに入ると

root@xxxxxxxxxxx:/usr/src/app#

のようなプロンプトになるので

rails db:initial_setup

を実行すると色々聞かれる。

※アカウント名(the account name)なのだが,特殊な用語で大学-学部-学科のようなツリーを考えたときの大学に相当する

1: development:public
What email address will the site administrator account use? > [ログインIDになるメールアドレスを入力]
Please confirm > [ログインIDになるメールアドレスを入力]
What password will the site administrator use? > [パスワードを入力]
Please confirm > [パスワードを入力]
What do you want users to see as the account name? This should probably be the name of your organization. > [他のユーザーから見たアカウント名]
To help our developers better serve you, Instructure would like to collect some usage data about your Canvas installation. You can change this setting at any time.:
1. Opt in
2. Only send anonymized data
3. Opt out completely
> [開発元に情報を送るかどうかなので2の匿名化か3の拒否が無難]
Thank you for participating in anonymous usage collection.
You can change this feature at any time by running the rake task 'rake db:configure_statistics_collection'
........................................................................................
Notifications Loaded
No notification files found for Assignment Publishing Reminder
No notification files found for Assignment Grading Reminder
No notification files found for Assignment Due Date Reminder
No notification files found for Rubric Assessment Invitation
No notification files found for Migration Export Ready
No notification files found for Migration Import Finished
No notification files found for Migration Import Failed

Initial data loaded

で完了。doryのおかげでhttp://canvas.dockerでログインできるようになってる。