Loading

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

posted @ 2018-03-13 00:04  bay1  阅读(3383)  评论(0编辑  收藏  举报