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
コメント