Part-DB是一个开源的器件管理工具,可用于管理个人的电子器材。本文将介绍如何安装和使用Part-DB,并分享在使用过程中遇到的一些bug以及解决方法。
最近,笔者使用Part-DB管理个人电子器材,并尝试在闲置的赛昉·星光2开发板上进行相关操作。如果操作失败,笔者计划使用树莓派进行替代。
首先,按照官方安装指南进行安装。笔者也是参考了官方指南进行安装。
根据网上的安装教程进行安装,这一步比较简单,不再赘述。
创建所需的目录和文件:
# 创建所需要的目录
mkdir Part-DB
cd Part-DB
mkdir db public_media uploads
touch docker-compose.yaml # 这是配置文件
根据官网示例进行编辑:
version: '3.3'
services:
partdb:
container_name: partdb
# 默认情况下,Part-DB将在端口8080下运行,可以在这里进行更改
ports:
- '8080:80'
volumes:
# 这里是关于docker挂载的文件
- ./uploads:/var/www/html/uploads
- ./public_media:/var/www/html/public/media
- ./db:/var/www/html/var/db
restart: unless-stopped
image: jbtronics/part-db1:1.11 # <-----这是重要的位置
environment:
# 将SQLite数据库放在我们映射的文件夹中。您也可以在这里配置其他类型的数据库。
- DATABASE_URL=sqlite:///%kernel.project_dir%/var/db/app.db
# 在docker环境中,日志将重定向到stderr
- APP_ENV=docker
...
注意:”image: jbtronics/part-db1:1.11 “这个参数很重要,它会检查本地是否存在镜像。
docker-compose up -d
# 进入容器
docker exec -it --user=www-data partdb /bin/bash
# 在容器内执行
php bin/console doctrine:migrations:migrate # 这个可以执行多次,初始化之后会提示初始化完成
等待输出密码后退出容器,控制台会输出一个高亮的代码,即是待会登录的用户名和密码。之后,在浏览器中访问http://localhost:8080即可:
[warning] The initial password for the "admin" user is: xxxxxxxxxx # xxxxxxxxxx 这个就是密码
在网页中创建了两个类别,以便在将来移植到另一个虚拟机时进行对比。
在导出容器之前,需要先commit成一个新的镜像,保存之前的修改。然后进行导出操作:
sudo docker commit -p -a "qm1412" -m "my first" ae8051601c61 mypartdb:v1
sudo docker save mypartdb:v1 > myimage.tar // 直接打包成镜像(全部数据)
注意:要将整个part-db文件一起打包出去,因为其中的db文件夹存放着数据库文件。
将压缩包导入新环境中,执行以下命令:
sudo docker load < myimage.tar # 导入镜像
sudo docker images # 查看镜像
在新环境中运行已保存的part-db:
修改docker-compose.yaml中的image参数为新导入的镜像。
touch docker-compose.yaml # 这是配置文件
# image: mypartdb:v1 # 这个一定要修改,不然不会执行成功的
使用docker-compose启动容器:
sudo docker-compose up -d
然后控制台会显示part-db容器创建成功,使用docker ps命令查看。
# 进入容器
docker exec -it --user=www-data partdb /bin/bash
# 在容器内执行
php bin/console doctrine:migrations:migrate # 这个你可以多次执行,反正初始化之后就会弹出你已经初始化完成了
最后查看结果,在浏览器中访问http://localhost:8080。
成功将容器进行转移,数据不会丢失。
systemctl restart docker
大部分情况下是权限问题导致的。