您可以使用 bind mounts 要么 docker volumes 。
bind mounts
docker volumes
假设你选择了 /db 作为容器内数据库的位置,和 ./data 是您要用于保存数据库的主机文件系统上的文件夹,或者 mydb 是你使用的音量:
/db
./data
mydb
docker run -p 5000:5000 -v ./data:/<path-to-db> my-app docker run -p 5000:5000 -v mydb:/<path-to-db> my-app
要找出容器中用于存储文件的路径(如果您不确定),请查找 sqlite3.connect 代码:参数是您需要的路径。
sqlite3.connect
命名卷不应丢失数据,如中所述 文档 :
卷是保存Docker容器生成和使用的数据的首选机制。
您实际需要的是确保将数据库保存到指定卷将使用的正确目录。我建议在烧瓶应用程序中创建一个特定目录,以便保存sqlite3文件,然后将该目录挂载到指定的卷。 例如,您的sqlite3文件路径是: /home/myflaskapp/db 然后挂载将如下,否则您将丢失数据,因为您没有安装要保留的正确路径:
/home/myflaskapp/db
docker run -p 5000:5000 -v mydb:/home/myflaskapp/db my-app