28654 posts 295 follows 404 followers
こんなんですが.motcha.techの管理人
インターネット老人会所属
えっじゃあ余裕じゃん(笑) と思いますよね?ところが、永続化せずにますどんをコンテナで構築しているとやっかいです。この永続化設定は「コンテナを作り直した時」に初めて有効になります。
つまり、
①今あるコンテナの中に閉じ込められている貴重なデータをホストOSにコピーして取り出す
②今あるコンテナを潰す(この時コンテナの中にある大事なデータはコンテナとともに消滅)
③大事なデータを設定ファイル通りの場所に正しく配置しなおす
④変更した設定を反映したコンテナを立て直す
という手順が必要です。
ますどんだと、よく永続化されるのはpostgresqlのデータベース(tootの中身やらアカウントのメアドパスワードやらとにかく大事なものが入ってる)とRedis(TLの中身とかのDBに書き込む前の情報が入ってる)の2つがあります。とはいえ、永続化設定自体は簡単です。.env.productionの中にある数行をコメントアウトするだけです。
「コンテナは便利だけど、コンテナと一緒に消えてもらっては困るデータもあるんだよなー」ってなことで、大事なデータはコンテナの外側(つまりホストOSの上)に置いておけます。これが「永続化」です。
ただし、コンテナはあくまでも「簡単に潰せる」ことがメリットなので…壊す時は中に入っている大事なデータも一緒に、あっという間に消えてなくなります。docker-compose downがコンテナ破棄コマンドです。永続化してない人は間違っても打たないよう。
つまり、コンテナを使って開発し、コンテナのテンプレートを他人に配ってしまえば…同じ環境を簡単に他人のサーバーに再現出来るわけです。これがDocker構築が提供されている理由の一つです。
コンテナの魅力は、いろいろ試して無茶苦茶に環境を弄っても、簡単に潰して作り直しが出来ることにあります。コンテナの作り方はレシピやテンプレートとなるイメージを作っておけば、コマンド一つで何度でも作り直せます。
マストドンをDockerで構築すると、このコンテナが複数個連携して機能を果たすようになっています。コンテナなので、間借りしている部屋の中になんでもかんでも入れてある状態ですね。
コンテナはホストの家とは独立した環境(部屋は区切られている)ですが、実際には基盤を共有している…という関係です。そして、コンテナはただのお部屋であり、間仕切りでしかないので…壁を崩して家財を捨てれば、あっという間に消えてなくなります。
当然お家の中にお家を建てると無駄が多いです。という訳で、土地やら基礎やらはホストのものを使い回して、ゲストは自分の小さなお部屋を建てて生活しちゃえばいい訳です。これがコンテナです。
コンテナは「簡単に作れる、簡単に壊せる」が特徴の仕組みです。パソコンの上で動いているOS(ホストと呼ぶ)の上に、更にもういっこOS(ゲストと呼ぶ)を動かしちゃうのが「仮想化」です。ホストのお家の中に、ゲストのお家を建ててしまうようなものです。
@mot リプ初めていただきましたー!ありがとうございます
分かりました 1週間ほど様子を見てみます!