首页 > 解决方案 > Docker 卷挂载路径

问题描述

我正在尝试开始使用 Docker 卷。我有一个简单的 Python Flask 应用程序,将数据存储在 sqlite3 数据库中。在没有卷的容器中运行应用程序是可行的,但是当然,每次我重新启动容器时,所有数据库数据都会丢失。

我尝试阅读有关如何使用卷的可用文档,并创建了一个新的命名卷:

docker volume create mydb

但是在使用卷启动容器时,我没有得到我必须指定的路径。如果我只是这样做

docker run -p 5000:5000 -v mydb:/db my-app

重新启动时它仍然会丢失所有数据。我需要指定什么路径而不是/db?这取决于什么?

标签: dockersqlitedocker-volume

解决方案


您可以使用bind mountsdocker volumes

假设您选择/<path-to-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代码:参数是您需要的路径。


推荐阅读