docker - Docker 卷挂载路径
问题描述
我正在尝试开始使用 Docker 卷。我有一个简单的 Python Flask 应用程序,将数据存储在 sqlite3 数据库中。在没有卷的容器中运行应用程序是可行的,但是当然,每次我重新启动容器时,所有数据库数据都会丢失。
我尝试阅读有关如何使用卷的可用文档,并创建了一个新的命名卷:
docker volume create mydb
但是在使用卷启动容器时,我没有得到我必须指定的路径。如果我只是这样做
docker run -p 5000:5000 -v mydb:/db my-app
重新启动时它仍然会丢失所有数据。我需要指定什么路径而不是/db
?这取决于什么?
解决方案
您可以使用bind mounts
或docker 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
代码:参数是您需要的路径。
推荐阅读
- javascript - 如何使用 html 代码从本地文件中选择图像
- c++ - 为什么在具有静态范围的 std::span 中不允许默认构造?
- python - Python websockets 以一种方式快速,但响应速度慢 10 倍
- frama-c - 如何在警报或错误时使 frama-c 退出非零?
- go - 有没有办法将新的 go embed 功能与 echo 一起使用?
- aws-glue - 如何在 dag 脚本中使用 AirflowGlueJobHook 开始粘合作业
- vuetify.js - Vuetify:如何在给定位置修复 v 菜单?
- ruby-on-rails - 具有茧三重嵌套形式的 Lot 的未知属性“development_id”
- asp.net-core - RabbitMQ 与 NServiceBus
- flutter - 如何在颤动中暂停音频网址?