MisskeyをUbunt22.04の入った手元のノートPC+Dockerで動かしたときのつまづきポイントのメモ

Sat Mar 11 15:01:23 JST 2023 (modified: Sat Mar 11 17:50:01 JST 2023)
views: 1253, keywords:Misskey, Docker この記事は最終更新日が1年以上前のものです。

 なんでこんなことをしているかというと、

  • 自分が運用しているmi.shellgei.orgのDBのデータを手元の環境で動かして、バックアップが完璧かどうか調べたい
  • サーバーの爆発に備え、いつでもサーバーを復活させたいので訓練したい
  • ノートPCの環境汚したくないので当然Dockerで動かしたい

からです。

 ちょっと手こずったので、自分のためにメモしておすそ分けします。本家のドキュメントにプルリク出すべきかとも思ったのですが、バージョンの細かい話でお手を煩わせてもよくなさそうなので、こちらにメモということで。

環境

  • OS: Ubuntu 22.04
  • CPU: intel Core i9
  • Docker version 20.10.21(ふつうにapt installでインストールしたもの)

標準環境ですが、Dockerに慣れてないと難しいです。あとgrepに慣れてないと辛いとおもうので、ぜひシェル芸本のご購入をご検討ください(宣伝)。

見ているマニュアル

https://misskey-hub.net/docs/install/docker.html の記述(2023年3月11日現在)に沿ってやってました。

つまづきポイント

docker compose使えない

 まず、Ubuntu 22.04でも、aptで入れたDockerではdocker composedocker-composeではない)が使えません。 そこで、

の記述にしたがって、「全ユーザ向け」でdocker-composeをインストールします。そのままコマンドを打っていけば大丈夫です。

 GitHubからもってきたMisskeyのDockerfileには、COPY --linkという記述がありますが、たぶんPCのDockerのバージョンの関係からか、--linkが使えません。こんなエラーが出ます。

 訂正: これはあとから説明するDOCKER_BUILDKIT=1を指定すると、--linkついてても大丈夫です。@ebanさんからツッコミが入りましたごめんなさい。つけないと、↓のようなエラーが出ます。

$ sudo docker compose build
   Sending build context to Docker daemon  149.6MB
   1 error occurred:
       * Error response from daemon: dockerfile parse error line 22: Unknown flag: link

ということで、--linkを消します。あとから説明するようにDOCKER_BUILDKIT=1をつけます。

ARG BUILDPLATFORM

 次に、このようなエラーが出ました。

$ sudo docker compose build
   [sudo] ueda のパスワード:
   Sending build context to Docker daemon  149.6MB
   Step 1/40 : ARG NODE_VERSION=18.13.0-bullseye
   Step 2/40 : FROM --platform=$BUILDPLATFORM node:${NODE_VERSION} AS native-builder
   1 error occurred:
       * Status: failed to parse platform : "" is an invalid component of "": platform specifier component must match "^[A-Za-z0-9_-]+$": invalid argument, Code: 1

これは、シェルスクリプトが読めれば分かりますが(←しつこい)、「BUILDPLATFORMがないから空になる」というエラーです。 ということで、Dockerfileに(x86_64のCPUなら)、ARG NODE_VERSIONの下あたりに次のように追加します。なんとなく勘でx86_64と書いたら通りました。

ARG NODE_VERSION=18.13.0-bullseye    # <- もとからあるやつ
   ARG BUILDPLATFORM=x86_64             # <- 追加

DOCKER_BUILDKIT=1

 これでビルドが通るかな・・・と思ったら、次のようなエラーが出ました。

$ sudo docker compose build
   (中略)
   1 error occurred:
       * Status: the --mount option requires BuildKit. Refer to https://docs.docker.com/go/buildkit/ to learn how to build images with BuildKit enabled, Code: 1

BuildKit使え」ということのようです。次のようにdockerに変数を与えます。

$ sudo DOCKER_BUILDKIT=1 docker compose build

そのほかのつまづきポイント

 この後は、設定ファイルのDBの名前やユーザー等がexample...のままだったといったミスがありました。これはエラーログを読めば分かると思いますので、割愛します。

 現場からは以上です。これでまたなにか問題が起きたら追記します。

ノート   このエントリーをはてなブックマークに追加 
 

prev:久々の日記(2023年3月10日) next:Kindleで自分の本が499円になって、書籍のランキング2位になった

やり散らかし一覧

記事いろいろ