代码之家  ›  专栏  ›  技术社区  ›  CGFoX

Docker卷装载路径

  •  0
  • CGFoX  · 技术社区  · 5 年前

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

    docker volume create mydb
    

    但我不知道在用卷启动容器时必须指定什么路径。如果我这么做的话

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

    /db ? 这取决于什么?

    2 回复  |  直到 5 年前
        1
  •  1
  •   Patronics mkhmmd17    3 年前

    你可以用 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 代码:参数是您需要的路径。

        2
  •  1
  •   Mostafa Hussein    5 年前

    命名卷不应丢失数据,如中所述 the docs

    卷是保存Docker容器生成和使用的数据的首选机制。

    您实际需要的是确保将数据库保存到指定卷将使用的正确目录中。我建议在flask应用程序中创建一个特定的目录,以便保存sqlite3文件,然后将该目录装载到指定的卷中。 /home/myflaskapp/db 然后装载将如下所示,否则您将丢失数据,因为您没有装载要保留的正确路径:

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