タイトルは釣りです。Dockerが入っている環境前提での作業環境構築の備忘録です。
参考:
Vagrant や Docker を使わずに macOS でマストドンの開発環境を構築する - QiitaDocker使わない版も用意しました!
Docker使わない環境構築はこちらまずは開発ガイドラインを読もう
マストドン公式 開発ガイドライン
https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Development-guide.md.env.productionの修正
マストドンのソースが手元にある状態にしてまず最初にやるのがこのファイルの編集です。
下記の部分を変更していきます。
LOCAL_DOMAIN
SECRET_KEY_BASE と OTP_SECRET
| docker-compose run --rm -e RAILS_ENV=production web bundle exec rake secret |
を二回叩いてちゃちゃっと設定します。
VAPID_PRIVATE_KEY と VAPID_PUBLIC_KEY
| docker-compose run --rm web rake mastodon:webpush:generate_vapid_key |
を一度だけ実行してコピペして貼り付けます。
SINGLE_USER_MODE
おひとりさまインスタンスにしたいときは
複数アカウント作りたいときは
にします。
アカウント新規作成画面やログイン画面にアクセスしようとするとID1番のユーザーのページに飛ぶ挙動になります。
DEFAULT_LOCALE
日本語を使うので日本にします。
SMTP関係
| SMTP_SERVER=localhost SMTP_PORT=587 SMTP_LOGIN= SMTP_PASSWORD= SMTP_FROM_ADDRESS=notifications@example.com |
使わないのでこうします。
docker-compose.ymlの編集
web
| command: tail -f /mastodon/README.md volumes: - ./:/mastodon ports: - "127.0.0.1:3000:3000" |
commandの行を書き換えておきます。
こうすることで、コンテナが落ちなくなります。
volumesはソースファイルをコンテナ内外から直接編集できるようにするためです。
ここまできたら
で起動します。
コンテナに入るには、
| docker-compose exec web bash |
これで入ります。
rootで入りたい場合は、
| docker-compose exec --user root web bash |
で入ります。
migrate
dbのセットアップをします。
| docker-compose run -e RAILS_ENV=development --rm web rake db:migrate |
これだけでOK。
[webコンテナ内] yarn
| yarn yarn install --dependencies yarn add webpack-dev-server --dependencies |
基本的にはyarnだけでOKですが、トラブルシュート的に3行
[webコンテナ内] development許可
| sed -i 's|BUNDLE_WITHOUT: "test:development"||g' /usr/local/bundle/config |
[webコンテナ内] Rails側でアセットのコンパイルをしない
| sed -i 's/compile: true/compile: false/' config/webpacker.yml |
[webコンテナ内] bundle install
[webコンテナ内] webpacker:install
| RAILS_ENV=development rails webpacker:install |
不要かもしれませんが念の為・・・。
全てnで解答します。
[webコンテナ内] 環境設定
| echo 'export RAILS_ENV=development' >> ~/.bashrc echo 'export NODE_ENV=development' >> ~/.bashrc source ~/.bashrc |
[webコンテナ内] rails起動
| RAILS_ENV=development bundle exec rails server |
[webコンテナ内] webpack --watch起動
| vim config/webpack/development.js |
してから、
| watchOptions: { poll: 1000 } |
を追加、これで1秒ごとにファイルの変更を監視します。
| NODE_ENV=development RAILS_ENV=development yarn build:development --watch |
こちらで監視のスタートとアセットのコンパイルをするようになります。
差分変更に対応しているのでファイル変更時はコンパイルが早いです。
localhost:3000にアクセス
http://localhost:3000 にアクセスして起動していることを確認します。
[webコンテナ内] admin作成
まずはじめに、管理画面からアカウントを作成します。
| RAILS_ENV=development rails mastodon:confirm_email USER_EMAIL=admin@example.com RAILS_ENV=development rails mastodon:make_admin USERNAME=admin |
[webコンテナ内] alpine linuxの環境改善
| docker-compose exec --user root web bash |
でrootでログイン後、
| apk update apk add --update alpine-sdk apk add vim tmux wget curl lsof tree sudo |
を実行しておくと使いやすくなると思います。
LiveReload
コンテナの外での作業です。ファイルが変更されたら、自動的にブラウザをリロードします。
LiveReload というChrome拡張をインストールします。
livereload本体は、下記URLの手順でインストールします。
Winの場合:
http://livereload.com/Macの場合:
http://macappstore.org/livereload/Mac版は App Storeでは有料ですが、それ以外のインストール手段では無料です。
npm版もあります。
アセットコンパイルに時間がかかるので3秒後にブラウザをリロードするようにしてlivereloadを起動します。