Docker中SQlite的配置和掛載


部署寒假里工作室的成果,二維碼掃碼登陸就暫停了,遇到了Docker對SQlite數據庫的操作

一開始寫Demo都是用的Mysql,后來發現了SQlite,就開始變懶了.....
(雖然SQlite無需配置,用起來方便,但是真正的生產中還是要選擇合適數據庫進行儲存數據)
現在喜歡上了用Docker,而關於Docker中如何配置SQlite的文章似乎很少
(只有像我這種練手的采用這種數據庫吧.....)

關於SQLite配置

在Dockerflie文件中,一開始采取的方式是一種很笨的方法
沒有相關的SQlite配置說明(或者是我沒找到)
就直接在文件中COPY過去,或者在Dockerfile中加入生成數據庫文件的命令

COPY data.sqlite /app/
RUN python manage.py createdb

如果直接進行COPY的話,會出現權限問題
導致鏡像中sqlite文件不能被寫入
在Dockerfile文件中加入chmod

RUN chmod 644 data.sqlite

關於SQlite掛載,備份

今天在部署的時候想到,這種文件儲存數據的形式
等部署成功並且運行一段時間后,數據庫的文件如何進行備份呢?

一種則是從docker中cp出來數據庫文件帶宿主機

docker cp 容器name:容器中文件路徑 宿主機地址
docker cp container /app/data/data.sqlite /home/bay1/data

另一種則是數據卷的形式
將sqlite文件掛在到宿主機,進行實時共享和保存
挑一個docker-compose文件的例子

version: '2'
services:
  vue:
    build: .
    volumes:
    - /home/wwwroot/vue/data:/vue/data
    ports:
      - 8004:5000

其中sqlite文件保存的目錄是data,volumes指定相應的宿主機和容器路徑
(宿主機要為絕對路徑)

數據卷的形式是可以直接掛載文件的,而不同於上述的目錄
但是似乎只能通過命令行進行設定
(原鏈接)

docker run -it -v 宿主機文件路徑:掛載到文件路徑 鏡像名 /bin/bash

需要注意的是如果文件的inode改變的話,會出現報錯信息
所以網上很多就直接推薦的方式是掛載文件所在的目錄

理解inode


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM