ホストのcronから、dokcerコンテナ内のファイルを定期的に削除
Dockerで、Wordpressを構築してあるのですが、Wordpressのプラグインで、『All-in-one WP Migration』ってバックアップ用にプラグインがあります。
このプラグインで、手動ですが、バックアップを取っておけば、他のサーバへのデータ移行が簡単なんですが、バックアップの際に、All-in-one WP Migrationのファイルを選択すると、ダウンロードしてパパソコン内に保存ができるのですが、ローカル内に、wp-content/ai1wm-backups/というディレクトリにずっとそのファイルが残ります。(拡張子が、wpressというファイルが、バックアップをするたびに生成されて保存されます)
その為、放っておくと、すごくディスク容量を使うため、定期的に消さないといけないことに気づきました。
上記に書いたように、WordpressをDockerで構築してあるため、さて、どうしたものか・・・・と考え、ホスト側のcronで消すことにしました。
ホスト側から、Dockerにログインするには、
docker exec -it 「コンテナID」 /bin/bash と記載しますが、
コンテナIDは、docker psで確認します。
root@localhost:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
u45d387js677 wordpress:latest "docker-entrypoint.s…" 3 months ago Up 3 hours 0.0.0.0:8800->80/tcp, :::8800->80/tcp wordpress
上記だと、u45d387js677となりますので、
root@localhost:~# docker exec -it u45d387js677 /bin/bash
root@u45d387js677:/var/www/html#
root@u45d387js677:/var/www/html#
root@u45d387js677:/var/www/html#
root@u45d387js677:/var/www/html# pwd
/var/www/html
root@u45d387js677:/var/www/html#
root@u45d387js677:/var/www/html#
として、ログインできます。
ってことは、これはrmで、ワイルドカード指定した、wpressを削除ってやればいいじゃね!!って思って実行。・・・・うまく消せない・・・・
コマンド指定が間違っていたのですが、シェルに渡してrmしようとすると、-cのオプションがいるんだって
参照:https://mimirswell.ggnet.co.jp/blog-368
実行したコマンドが以下のコマンド、
root@localhost:~# docker exec -it u45d387js677 /bin/bash -c "rm wp-content/ai1wm-backups/*.wpress"
root@localhost:~#
root@localhost:~#
これを、ctontabで入れたら、動くじゃんって思ったら、動かない・・・・(;_:)
原因は、オプションでした。下記に同じようにできなかった人の例が
参照:https://www.infra-study.com/docker/cron%E3%81%A7docker-exec%E3%81%AB%E3%82%88%E3%82%8A%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%A6%E5%A4%B1%E6%95%97%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE/
参照:https://510052.xyz/posts/k78e5r2n1cty0ygv3ie5/
そこで、crontab -eで以下のように記載。毎日13:00に指定して消去した場合です。
00 13 * * * docker exec u45d387js677 /bin/bash -c "rm wp-content/ai1wm-backups/*.wpress"