BaoXuebin / beancount-gs

基于 beancount 提供个人记账财务管理的 RESTful API 服务(包含前端页面)
https://www.yuque.com/chuyi-ble7p/beancount-gs
MIT License
317 stars 42 forks source link

Docker 中创建的账本没有存在物理机器上,只在docker里有 #21

Closed quewen08 closed 2 years ago

quewen08 commented 2 years ago

如题,请问作者有什么方案吗

quewen08 commented 2 years ago

通过docker-compose 创建容器,然后在网页上创建账本,能看到日志是输出了create file success,但是在物理机上映射的目录中找不到该文件,只有在docker容器内部才能找到

BaoXuebin commented 2 years ago

https://github.com/BaoXuebin/beancount-gs/blob/main/docker-compose.yml 如果不设置参数,账本文件会创建到物理机器的 /data/beancount 文件夹。

quewen08 commented 2 years ago
version: "3.9"
services:
  app:
    container_name: beancount-gs
    image: xdbin/beancount-gs:latest
    environment:
      - PUID=1000
      - PGID=100
      - TZ=Asia/Shanghai
    ports:
      - 10000:80
    # volumes 挂载目录会导 /app/public/icons 中的图标被覆盖,这里将默认图标在挂载后重新拷贝图标    
    command: >
     sh -c "cp -rn /app/public/default_icons/* /app/public/icons && ./beancount-gs -p 80"
    volumes:
      - "${dataPath:-/srv/dev-disk-by-uuid-{删掉的hash}/self/data/beancount}:${dataPath:-/data/beancount}"
      - "${dataPath:-/srv/dev-disk-by-uuid-{删掉的hash}/self/data/beancount/public}/icons:/app/public/icons"
      - "${dataPath:-/srv/dev-disk-by-uuid-{删掉的hash}/self/data/beancount}/config:/app/config"
      - "${dataPath:-/srv/dev-disk-by-uuid-{删掉的hash}/self/data/beancount}/bak:/app/bak"
    restart: unless-stopped

就这么写的啊

BaoXuebin commented 2 years ago

按照这个写法,你在 docker 中的 /data/beancount 会映射到宿主机的 /srv/dev-disk-by-uuid/self/data/beancount 这个目录。其他目录则只会存在 docker 中,而不会映射到宿主机。

1657818597319

上图中,账本存储位置 定义了数据存储位置,必须设置为 /data/beancount,如果设置了其他路径,会导致无法出现在物理机器上。

你可以进入 docker,删除 /config/config.json,然后 docker-compose up 启动 docker 镜像重新配置 账本存储位置

quewen08 commented 2 years ago

原来如此,明白了。感谢

ianzhuo commented 1 year ago

@BaoXuebin : 作者您好,有關這個帳本存儲位置應寫入/data/beancount配置,是不是考慮寫在說明文檔中呢?我在配置docker時也遇到這個問題,還要來這邊翻issue才找到解答,對初用beancount-gs的用戶來說,有點小障礙,謝謝。

BaoXuebin commented 1 year ago

不错的建议