• 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

  • 相关阅读:
    php数组
    php运算符
    PHP数据类型
    面向对象3和继承
    面向对象2
    面向对象1
    语法整理php
    语法整理
    ajax
    数据库4
  • 原文地址:https://www.cnblogs.com/bay1/p/10982244.html
Copyright © 2020-2023  润新知