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 compose
(docker-compose
ではない)が使えません。 そこで、
の記述にしたがって、「全ユーザ向け」でdocker-compose
をインストールします。そのままコマンドを打っていけば大丈夫です。
COPY --link
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...
のままだったといったミスがありました。これはエラーログを読めば分かると思いますので、割愛します。
現場からは以上です。これでまたなにか問題が起きたら追記します。