2025年3月 ホームページを更新しました。

snipe-itのDocker版のバックアップリストア

設定

snipe-itのDocker版のバックアップリストアができたっていったけど、ホスト自体の再起動をしたら、snipt-itにアクセスできないのを確認。

#docker ps で、起動できているので、docker snipe-itの中に入って確認したところ、apacheが起動後すぐにシャットダウンしているのを確認。

思いついたのが、リストア時に、初期セットアップと同じやり方(app keyを確認して、.envにAPPIキーを記載)をしたこと、つまり、バックアップした側と、リストア側で、app keyが違うってことです。

そこで、以下の通りにやってみた

STEP
一回リストアされる側のdocker版snipe-itをすべて消去。
*********************************************
1 docker停止
**********************************************
root@localhost:~# docker ps
CONTAINER ID   IMAGE                           COMMAND                   CREATED          STATUS                    PORTS                                              NAMES
4459dc94974f   snipe/snipe-it:latest           "/startup.sh"             34 minutes ago   Up 22 minutes             443/tcp, 0.0.0.0:8888->80/tcp, [::]:8888->80/tcp   snipeit-app-1
7e2c44f2d9c5   mariadb:11.5.2                  "docker-entrypoint.s…"   11 hours ago     Up 22 minutes (healthy)   3306/tcp                                           snipeit-db-1
c43003edaf3d   twsnmp/twsnmpfc:arm64_v1.53.0   "/twsnmpfc"               3 days ago       Up 22 minutes                                                                twsnmpfc
root@localhost:~#
root@localhost:~#
root@localhost:~# docker stop snipeit-app-1
snipeit-app-1
root@localhost:~# docker stop snipeit-db-1
snipeit-db-1
root@localhost:~#
root@localhost:~#
root@localhost:~#
root@localhost:~#
root@localhost:~# docker ps
CONTAINER ID   IMAGE                           COMMAND                   CREATED        STATUS        PORTS                                           NAMES
c43003edaf3d   twsnmp/twsnmpfc:arm64_v1.53.0   "/twsnmpfc"               32 hours ago   Up 7 hours                                                    twsnmpfc

*********************************************
2 docker コンテナ削除
**********************************************
root@localhost:~# docker container ls
CONTAINER ID   IMAGE                           COMMAND                   CREATED        STATUS                  PORTS                                              NAMES
c43003edaf3d   twsnmp/twsnmpfc:arm64_v1.53.0   "/twsnmpfc"               32 hours ago   Up 7 hours                                                                 twsnmpfc
0f6983e25059   snipe/snipe-it:latest           "/startup.sh"             33 hours ago   Up 18 hours             443/tcp, 0.0.0.0:8888->80/tcp, [::]:8888->80/tcp   snipeit-app-1
45addfeb5184   mariadb:11.5.2                  "docker-entrypoint.s…"   34 hours ago   Up 18 hours (healthy)   3306/tcp                                           snipeit-db-1
810f50ebdb02   tomcat:almalinux                "/bin/bash -l -c './…"   8 months ago   Up 18 hours             0.0.0.0:18080->8080/tcp, [::]:18080->8080/tcp      tomcat
root@localhost:~# docker rm snipeit-app-1
snipeit-app-1
root@localhost:~#
root@localhost:~# docker rm snipeit-db-1
snipeit-db-1
root@localhost:~#
root@localhost:~#

*********************************************
3 docker volume削除
**********************************************
root@localhost:~# docker volume ls
DRIVER    VOLUME NAME
local     snipeit_db_data
local     snipeit_storage
local     twsnmpfc
root@localhost:~# docker volume rm snipeit_db_data
snipeit_db_data
root@localhost:~# docker volume rm snipeit_storage
snipeit_storage


*********************************************
4 docker image削除
**********************************************
root@localhost:~# docker images
REPOSITORY        TAG             IMAGE ID       CREATED        SIZE
snipe/snipe-it    latest          f6ad86e153a0   3 days ago     1.29GB
twsnmp/twsnmpfc   arm64_v1.53.0   18c51a52a518   4 weeks ago    64.2MB
alpine            latest          8d591b0b7dea   3 months ago   8.17MB
mariadb           11.5.2          c2c976592273   6 months ago   435MB
tomcat            almalinux       e67c5f3594b6   8 months ago   883MB
root@localhost:~#
root@localhost:~#
root@localhost:~# docker rmi f6ad86e153a0
root@localhost:~#
root@localhost:~# docker rmi c2c976592273
root@localhost:~#
root@localhost:~# docker images
REPOSITORY        TAG             IMAGE ID       CREATED        SIZE
twsnmp/twsnmpfc   arm64_v1.53.0   18c51a52a518   4 weeks ago    64.2MB
alpine            latest          8d591b0b7dea   3 months ago   8.17MB
tomcat            almalinux       e67c5f3594b6   8 months ago   883MB
root@localhost:~#
root@localhost:~#
root@localhost:~#
root@localhost:~#
STEP
.envのAPPIキーの部分を、バックアップしたAPPIキーと同じものにする(docker-compose.ymlはすでに用意してある)
root@localhost:~/snipeit# vi.env
~~~~省略~~~~~~~~~~~~~
# --------------------------------------------
# REQUIRED: BASIC APP SETTINGS
# --------------------------------------------
APP_ENV=production
APP_DEBUG=false
# Please regenerate the APP_KEY value by calling `docker compose run --rm app php artisan key:generate --show`. Copy paste the value here
APP_KEY=base64:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  <--バックアップ元のappkey書き換え
STEP
#docker compose up -dを実行
STEP
起動後、すぐにコンテナを停止し、バックアップしたdb apのデータをリストア
root@localhost:~/snipeit# docker stop snipeit-app-1
root@localhost:~/snipeit#
root@localhost:~/snipeit#
root@localhost:~/snipeit# docker stop snipeit-db-1
root@localhost:~/snipeit#
root@localhost:~/snipeit#
root@localhost:~/snipeit#
root@localhost:~/snipeit#
root@localhost:~/snipeit# docker run --rm -v snipeit_db_data:/volume -v /mnt/usb_mem/2025-05-29/:/backup alpine tar xzf /backup/snipeit_db_data.tar.gz -C /volume
root@localhost:~/snipeit#
root@localhost:~/snipeit#
root@localhost:~/snipeit#
root@localhost:~/snipeit#
root@localhost:~/snipeit# docker run --rm -v snipeit_storage:/volume -v /mnt/usb_mem/2025-05-29/:/backup alpine tar xzf /backup/snipeit_storage.tar.gz -C /volume
root@localhost:~/snipeit#
root@localhost:~/snipeit#
root@localhost:~/snipeit#
root@localhost:~/snipeit# shutdown -r now
STEP
docker-compose.ymlに自動起動の設定が入っているため、そのままホスト側を再起動(停電時復旧時に戻るかの試験も兼ねる)
STEP
2回再起動しても、データが戻った状態で、snipe-itが起動するのを確認

バックアップする方法も記載します。

root@localhost:~#
root@localhost:~#
root@localhost:~#
root@localhost:~#
root@localhost:~#
root@localhost:~# vi /home/user/backup_snipeit.sh  <--バックアップ用シェル作成
# 1. バックアップ先ディレクトリ
BACKUP_DIR="/mnt/usb_mem/$(date +%F)"    <----USBメモリに保存 (NASとかに保存の方が良い)
mkdir -p "$BACKUP_DIR"

# 2. MariaDBデータのバックアップ
docker run --rm -v snipeit_db_data:/volume -v "$BACKUP_DIR":/backup alpine tar czf /backup/snipeit_db_data.tar.gz -C /volume .

# 3. Snipe-ITストレージのバックアップ
docker run --rm -v snipeit_storage:/volume -v "$BACKUP_DIR":/backup alpine tar czf /backup/snipeit_storage.tar.gz -C /volume .

# 4. .envファイルとdocker-compose.yamlのコピー
cp /snipeit/.env "$BACKUP_DIR/.env"
cp /snipeit/docker-compose.yml "$BACKUP_DIR/docker-compose.yaml"
cp -Rf /snipeit/custom/ "$BACKUP_DIR/"   <----docker-compose.ymlで、追加したパッケージを保存したところの作ったので、バックアップ
root@localhost:~#
root@localhost:~#
root@localhost:~# chmod +x /home/user/backup_snipeit.sh   <-----実行権付与
root@localhost:~#
root@localhost:~#
root@localhost:~#
root@localhost:~# crotab -e    <-----定期的にバックアップしたい場合設定 
00 06 * * * /home/user/backup_snipeit.sh      <---毎朝6:00

当たり前かもしれませんが、自分の環境で、現在(2025/6/1)のdocker、snipe-itのバージョンでうまくいったやり方です。それぞれの環境に合わせてください。

環境
root@localhost:~/snipeit# docker –version
Docker version 28.1.1, build 4eba377
●snipe-itバージョン: Version v8.1.4 – build 18245 (master)

snipe-it docker用 ダウンロード インストール説明サイト(env dokcer-compose.ymlダウンロード方法)
https://snipe-it.readme.io/docs/docker

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA