docker搭建firefiy iii
Firefly III是一个自托管的金融管理工具,旨在帮助个人和家庭跟踪他们的支出、收入、预算和资产。它提供了一个直观的web界面,通过这个界面,用户可以快速设置账户、记录交易、创建预算,并且还可以查看各种报表来分析个人财务状况。
搭建Firefly III使用Docker是一个非常方便的方式,因为它抽象了很多配置细节,让你可以更专注于使用Firefly III而不是配置它。
通过Docker CLI搭建Firefly III
首先,你需要通过命令行逐一创建所需的网络、卷和容器。
- 创建网络:
docker network create firefly_iii_network
- 创建卷:
docker volume create firefly_iii_upload
docker volume create firefly_iii_db
- 运行数据库容器:
docker run -d --name firefly_iii_db --hostname db --restart always \--env-file .db.env -v firefly_iii_db:/var/lib/mysql \--network firefly_iii_network mariadb
- 运行Firefly III核心容器:
docker run -d --name firefly_iii_core --hostname app --restart always \-v firefly_iii_upload:/var/www/html/storage/upload -p 24380:8080 \--env-file .env --network firefly_iii_network \--depends-on firefly_iii_db fireflyiii/core:latest
- 设置定时任务容器:
docker run -d --name firefly_iii_cron --restart always \--network firefly_iii_network alpine \/bin/sh -c "echo \"0 3 * * * wget -qO- http://app:8080/api/v1/cron/REPLACEME\" | crontab - && crond -f -L /dev/stdout"
使用Docker Compose搭建
version: '3.3'services:app:image: fireflyiii/core:latesthostname: appcontainer_name: firefly_iii_corerestart: alwaysvolumes:- firefly_iii_upload:/var/www/html/storage/uploadenv_file: .envnetworks:- firefly_iiiports:- 24380:8080depends_on:- dbdb:image: mariadbhostname: dbcontainer_name: firefly_iii_dbrestart: alwaysenv_file: .db.envnetworks:- firefly_iiivolumes:- firefly_iii_db:/var/lib/mysqlcron:## To make this work, set STATIC_CRON_TOKEN in your .env file or as an environment variable and replace REPLACEME below# The STATIC_CRON_TOKEN must be *exactly* 32 characters long#image: alpinerestart: alwayscontainer_name: firefly_iii_croncommand: sh -c "echo \"0 3 * * * wget -qO- http://app:8080/api/v1/cron/REPLACEME\" | crontab - && crond -f -L /dev/stdout"networks:- firefly_iiivolumes:firefly_iii_upload:firefly_iii_db:networks:firefly_iii:driver: bridge
version
: 指定了使用的Docker Compose文件格式版本,'3.3'
提供了现代Docker平台需要的所有功能。services
: 定义了要运行的服务,本例中包括app
(Firefly III核心应用)、db
(数据库)和cron
(定时任务)。image
: 指定容器使用的镜像。hostname
: 设置容器内的主机名。container_name
: 定义容器的名称,这使得容器更容易识别。restart
: 设置容器的重启策略,always
表示容器总是重启。volumes
: 将数据卷或文件挂载到容器内的指定路径。env_file
: 从文件中读取环境变量。networks
: 指定容器连接的网络。ports
: 将容器内的端口映射到主机的端口,格式为<主机端口>:<容器端口>
。depends_on
: 表明容器启动的依赖关系。command
: 定制容器启动后执行的命令。
volumes
: 定义了使用的卷,用于持久化和共享数据。networks
: 定义了网络,driver: bridge
表示使用桥接模式,使得容器之间能够单独通信。