Docker 搭建留言板 sayhello 进阶使用教程

项目源码:https://github.com/powersee/sayhello

用 docker 的话,一条命令即可运行起来

docker run -d -p 5000:5000 --name sayhello powersee/sayhello

第一个 5000 可以换为其它的端口,例如 6000,7000 等等,之后在浏览器通过 IP:端口 的形式来访问即可。

删除内容

先来说说,怎么删除内容。需要做的是,进入 docker 容器里的,使用命令行对 sqlite 数据库的内容进行删除。

$ docker ps                                                    
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1888c7d98fe8 powersee/sayhello "python3 -m flask ru…" 2 months ago Up 2 months 0.0.0.0:10086->5000/tcp, :::10086->5000/tcp sayhello

通过 docker ps 命令,可以查询到目前正在运行的容器有哪些。

进入容器内的交互终端

docker exec -it sayhello /bin/sh

由于这个程序使用的是 sqlite 的数据库,所以需要先安装 sqlite,才能够对 data.db 进行修改。

安装

apk add sqlite

查询

sqlite3 data.db

select * from message;

此时就会将所有的留言都显示出来,这里我随便找几条

452|p|1|2023-02-14 14:55:37.930067
453|p|1|2023-02-14 14:55:38.022029
454|p|b 站旅游团路过|2023-02-14 15:18:19.983384

可以看到,它的格式是这样的

id | username | content | time

所以我们要删除的话,可以使用它的 id,例如这样

delete from message where id=452;

删除多条,可以使用 in,例如

delete from message where id in(23,26,29);

如果要删除大范围的,例如 id 从 200 到 450 都要删除掉

delete FROM message where id > 199 and id < 451;
#或者
delete FROM message where id >= 200 and id <= 450;

如果要清空所有内容

DELETE FROM message;

备份数据库

如果你现在是在容器里,也就是终端里左边是显示 /sayhello # ,想要退出可以按 ctrl + D (是两个按键同时按)

由于数据都是存放在 data.db 这个数据库里的,所以我们只要备份它就可以了。此时我们可以使用 docker cp 命令。

docker cp sayhello:/sayhello/data.db .

此处的点 . 代表当前目录,也就是把数据库复制出来,放到当前目录,你也可以改为其它的。

docker cp sayhello:/sayhello/data.db /home/powersee

这样就会把 data.db 放到 /home/powersee 这个目录下。