# Docker宝库：ezBookkeeping记账


ezBookkeeping 是一个自托管 (self-hosted) 的轻量个人账本应用。它可以部署在几乎所有平台上，包括 x86、x64 以及 ARM 架构的 Windows、macOS 和 Linux。您甚至可以将它部署在树莓派 (Raspberry) 设备中。此外，它支持多种不同数据库，包括 SQLite、MySQL 和 PostgreSQL 等。借助 Docker，您甚至只需要一条命令即可将其部署，而无需复杂的配置。

项目地址：[https://github.com/mayswind/ezbookkeeping](https://github.com/mayswind/ezbookkeeping)

容器中的默认路径：
- **配置文件**：`/ezbookkeeping/conf/ezbookkeeping.ini`
- **数据库文件（使用 `sqlite3` 数据库）**：`/ezbookkeeping/data/ezbookkeeping.db`
- **日志文件**：`/ezbookkeeping/log/ezbookkeeping.log`
- **对象存储根路径（使用 `local_filesystem` 对象存储）**: `/ezbookkeeping/storage/`


使用持久化数据卷运行容器:
```bash
# 在宿主机创建数据路径并修改 UID/GID
$ mkdir -p /opt/ezbookkeeping/data
$ mkdir -p /opt/ezbookkeeping/storage
$ chown 1000:1000 /opt/ezbookkeeping/data
$ chown 1000:1000 /opt/ezbookkeeping/storage
```

```bash
docker run -d \
-p 9080:8080 \
--name ezbookkeeping \
-v /opt/ezbookkeeping/data:/ezbookkeeping/data \
-v /opt/ezbookkeeping/storage:/ezbookkeeping/storage \
-v /etc/localtime:/etc/localtime:ro \
-e TZ=Asia/Shanghai \ 
-e EZBOOKKEEPING_ENABLE_REGISTRATION=true \ --允许用户注册，首次使用选true，注册成功后，可改成false重新创建容器，以关闭注册功能。
mayswind/ezbookkeeping:latest
```
注意：
 - -e EZBOOKKEEPING_ENABLE_REGISTRATION=true  ： 允许用户注册，首次使用选true，注册成功后，可改成false重新创建容器，以关闭注册功能。

或者使用Docker-compose文件：
```yaml
# 首次安装时，设置 - EZBOOKKEEPING_ENABLE_REGISTRATION=true ，这样访问http://主机IP:8880 后，可进行账户注册
# 之后，建议关闭账户注册。把下边配置文件改成  - EZBOOKKEEPING_ENABLE_REGISTRATION=false ，重新部署一遍即可。
# 首次导入已有账单前，建议先从交易分类中创建好分类（因为直接导入的话所有的分类都会直接塞到“默认分类”中）
version: "3"

services:
  ezbookkeeping:
    image: mayswind/ezbookkeeping:latest
    container_name: ezbookkeeping
    restart: unless-stopped
    ports:
      - "8880:8080"  # 可修改为其他端口，如 "5680:8080"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      # 以下4个目录须确保UID:GID 是 1000:1000，
      # 可以先手动创建4个目录，例如：mkdir -p /opt/ezbookkeeping/data
      # 然后设置权限：chown 1000:1000 /opt/ezbookkeeping/data
      - /opt/ezbookkeeping/data:/ezbookkeeping/data/  # 数据库文件夹。
      - /opt/ezbookkeeping/storage:/ezbookkeeping/storage # 对象存储根路径（使用 local_filesystem 对象存储）。
      #- /opt/ezbookkeeping/log:/ezbookkeeping/log # 日志文件夹。
      #- /opt/ezbookkeeping/conf:/ezbookkeeping/conf/  # 配置文件（不需要挂载，通过环境变量进行设置即可）。
    environment:
      - TZ=Asia/Shanghai
      # 可选：启用用户注册（true=允许用户注册，首次使用选true，注册成功后，可改成false重新创建容器，以关闭注册功能。）
      - EZBOOKKEEPING_ENABLE_REGISTRATION=true
```
第一次使用需要注册账号，如需导入数据。可以先随意添加两条记账记录，然后导出。根据导出的格式填写导入模板即可。

记账类别、标签等信息需要提前在平台中设置好，否则导入时会要求强制修改成已有的分类或标签。

