title: Docker中SQlite的配置和掛載 date: 2018-03-13 00:03:46 tags: [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改變的話,會出現報錯資訊 所以網上很多就直接推薦的方式是掛載檔案所在的目錄