• 轻量级项目任务管理工具DooTask


    在这里插入图片描述

    昨天自己去做了 1 次核酸,这周还有 2

    在这里插入图片描述


    本文其实去年就想写了,但真正动手是今年 3 月份,老苏在 CentOS 7 上安装非常顺利,但是在群晖上却遇到了一些问题,所以就搁置了。之后好几位网友跟老苏提到 DooTask,原本是想基于官方的 cmd 脚本改一个适合在群晖上运行的版本,奈何水平太菜,所以直到今天也只能通过一次一次输入命令行来完成安装。 😂

    前言

    什么是 DooTask ?

    DooTask 是一款轻量级的开源在线项目任务管理工具,提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM,文件管理等工具。

    官方提供了在线 demohttps://www.dootask.com

    可以先去体验,如果合适再考虑是否需要自己搭建。

    准备

    如果你不是在群晖上安装,建议使用官方的教程和脚本,简单高效,不容易出错。

    老苏是在 DS3617xs 上安装的,其中

    • docker 的版本是 20.10.3, build b35e731
    • docker-compose 的版本是 1.28.5, build 1bbbad71

    之所以要写版本是因为按照官方的教程,在使用 ./cmd install 一键安装时,会显示 docker-compose 版本过低

    在这里插入图片描述

    按照官方的要求,Docker Compose 需要 v2.0+

    在这里插入图片描述

    如果只是屏蔽版本检测又会出现其他一堆的错误,所以老苏有两个选择:

    1. 升级 docker-compose,但老苏查了一下,似乎并有满足要求的版本;
    2. 尝试改用 docker-compose up -d 来一键启动,需要很多命令行操作,但似乎这是目前唯一的选择;

    事实证明,并不需要 Docker Compose v2.0+ 也是可以安装成功的

    在你开始之前,老苏有必要提醒大家,后面均为命令行操作,如果遇到问题,没有点基础排查起来可能会比较困难,老苏本人也是一样,所以如果不是特别需要,不建议在群晖上安装。

    安装 Git

    • 套件中心设置 --> 套件来源 --> 新增

    在这里插入图片描述

    • 名称:随意;
    • 位置:http://packages.synocommunity.com/
    • 套件中心 --> 社群,找到并安装套件 Git

    在这里插入图片描述

    下载代码

    SSH 客户端连到群晖,依次执行下面的命令

    # 进入 docker 目录
    cd /volume2/docker
    
    # 国内用户使用gitee克隆项目到您的本地或服务器
    git clone https://gitee.com/aipaw/dootask.git
    
    # 国外用户还是用github
    git clone https://github.com/kuaifan/dootask.git
    
    # 进入目录
    cd dootask
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    设置 .env

    # 创建 .env 文件
    cp .env.docker .env
    
    • 1
    • 2

    .env.docker 复制出 .env,并按下面老苏给的示例进行修改,需要修改的参数不多,其中:

    • APP_URL:为主机 IP,也就是群晖主机的 IP,如果反代,这里也不用修改;
    • APP_PORT:是应用访问的端口,默认为 2222,不冲突的话就保持默认好了;
    • DB_PASSWORD:数据库的密码;
    • COMPOSE_HTTP_TIMEOUT:这一行是老苏新增的,主要解决执行 docker-compose up -d 可能存在的超时问题;

    下图就是曾经出现过的超时错误

    APP_NAME=DooTask
    APP_ENV=local
    APP_KEY=
    APP_DEBUG=true
    APP_SCHEME=auto
    APP_URL=http://192.168.0.197
    
    APP_ID=220813
    APP_IPPR=172.68.0
    APP_PORT=2222
    
    LOG_CHANNEL=stack
    LOG_LEVEL=debug
    
    DB_CONNECTION=mysql
    DB_HOST="${APP_IPPR}.5"
    DB_PORT=3306
    DB_DATABASE=dootask
    DB_USERNAME=dootask
    DB_PASSWORD=123456
    
    DB_ROOT_PASSWORD=UbtzwQUh2Kkv
    DB_PREFIX=pre_
    
    BROADCAST_DRIVER=log
    CACHE_DRIVER=redis
    QUEUE_CONNECTION=redis
    SESSION_DRIVER=redis
    SESSION_LIFETIME=120
    
    MEMCACHED_HOST=127.0.0.1
    
    REDIS_HOST="${APP_IPPR}.4"
    REDIS_PASSWORD=null
    REDIS_PORT=6379
    
    MAIL_MAILER=smtp
    MAIL_HOST=mailhog
    MAIL_PORT=1025
    MAIL_USERNAME=null
    MAIL_PASSWORD=null
    MAIL_ENCRYPTION=null
    MAIL_FROM_ADDRESS=null
    MAIL_FROM_NAME="${APP_NAME}"
    
    AWS_ACCESS_KEY_ID=
    AWS_SECRET_ACCESS_KEY=
    AWS_DEFAULT_REGION=us-east-1
    AWS_BUCKET=
    
    PUSHER_APP_ID=
    PUSHER_APP_KEY=
    PUSHER_APP_SECRET=
    PUSHER_APP_CLUSTER=mt1
    
    MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
    MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
    
    LARAVELS_LISTEN_IP=0.0.0.0
    LARAVELS_LISTEN_PORT=20000
    
    COMPOSE_HTTP_TIMEOUT=1000
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62

    修改 docker-compose.yml

    原本老苏并不打算修改 docker-compose.yml,但发现不修改的话,在导入数据库表操作时会报错👇

    在这里插入图片描述

    因此还是需要修改 docker-compose.yml 中的 mariadb 部分,考虑到篇幅,老苏只贴了相关的部分:

    • 老苏注释了端口,这主要是从安全性考虑,毕竟咱也不是做开发,当然不注释也没问题;
    • 在环境变量中新增 MYSQL_ROOT_HOST: "0.0.0.0",解决不能远程访问,导致导入表出错的问题;
      mariadb:
        container_name: "dootask-mariadb-${APP_ID}"
        image: "mariadb:10.7.3"
        # ports: # mysql ports item
        #   - "33062:3306" # mysql ports value
        volumes:
          - ./docker/mysql/repassword.sh:/etc/mysql/repassword.sh
          - ./docker/mysql/conf.d:/etc/mysql/conf.d
          - ./docker/mysql/data:/var/lib/mysql
        environment:
          TZ: "Asia/Shanghai"
          MYSQL_PREFIX: "${DB_PREFIX}"
          MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
          MYSQL_DATABASE: "${DB_DATABASE}"
          MYSQL_USER: "${DB_USERNAME}"
          MYSQL_PASSWORD: "${DB_PASSWORD}"
          MYSQL_ROOT_HOST: "0.0.0.0"
        networks:
          extnetwork:
            ipv4_address: "${APP_IPPR}.5"
        restart: unless-stopped
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    在这里插入图片描述

    启动

    准备工作完成后,就可以开始启动了

    # 创建数据库目录
    mkdir -p ./docker/mysql/data
    
    # 修改数据库目录权限
    chmod -R 775 ./docker/mysql/data
    
    # 创建日志目录
    mkdir -p ./docker/log/supervisor
    
    # 修改日志目录权限
    chmod -R 775 ./docker/log/supervisor
    
    # 一键启动
    docker-compose up -d
    
    # 如果遇到错误,可以一键删除之后再一键启动
    docker-compose down
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    先不要着急访问,因为现在访问肯定是返回错误页面的

    在这里插入图片描述

    还需要我们做最后的一些配置工作

    配置

    先检测所有的容器是否都已经正常启动

    在这里插入图片描述

    下图中数据库就有存在问题,正在不断重启,至于原因老苏也不知道

    在这里插入图片描述

    如果一切正常的话,就可以进行下面的操作了

    # 进入 PHP 容器
    docker-compose exec -u root php /bin/bash
    
    # ----以下命令在容器内执行----
    
    # 安装 composer 依赖
    ## 1.修改 composer 的全局配置文件,使用国内源
    composer config repo.packagist composer https://packagist.phpcomposer.com
    
    ## 2.安装依赖
    composer install
    
    ## 3.取消全局配置
    composer config --unset repos.packagis
    
    # 生成 APP_KEY
    php artisan key:generate
    
    # 切换模式到 production
    php bin/run --mode=prod
    
    # 数据库操作
    php artisan migrate --seed
    
    # 退出容器
    exit
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    看到 Database seeding completed successfully. ,说明数据库导入成功了

    在这里插入图片描述

    运行

    在浏览器中输入 http://群晖IP:2222 就能看到登录界面

    在这里插入图片描述

    第一次需要先注册账号

    在这里插入图片描述

    如果出现 System error 提示,很可能是数据库有问题

    在这里插入图片描述

    注册成功

    在这里插入图片描述

    自动跳转到主界面

    在这里插入图片描述

    接下来你就可以新建项目、添加人员,分发任务等等。

    反向代理

    DooTask 支持反代,但是不支持在非标端口运行,因为在 https://dt.laosu.ml:444/manage/dashboard 中你会发现,javascript 被截掉了端口

        <script src="//dt.laosu.ml/js/language.all.js">script>
        <script src="//dt.laosu.ml/js/scroll-into-view.min.js">script>
    
    • 1
    • 2

    老苏不是程序员,所以只能用 Cloudflared 来映射到公网。

    结语

    这个项目在其他 linux 平台上安装,最大的难度可能是安装支撑环境,比如 phpdocker等,但是项目本身的安装很简单,官方提供了脚本,可以完成安装、删除、备份、改端口、重置密码、升级等操作。

    而在群晖上,不需要考虑环境,但是没有了脚本的支持,安装起来比较麻烦,不细心的话比较容易出错,各种操作只能自己手动完成了。

    等有空了再看看他们家的 WookTeam,一款轻量级的在线团队协作工具,安装似乎更简单一些。

    参考文档

    kuaifan/dootask: DooTask是一款轻量级的开源在线项目任务管理工具,提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM,文件管理等工具。
    地址:https://github.com/kuaifan/dootask

    DooTask
    地址:https://www.dootask.com/

    How to Update Docker Compose on a Synology NAS - WunderTech
    地址:https://www.wundertech.net/how-to-update-docker-compose-on-a-synology-nas/

    基于 Swoole 实现高性能 HTTP 服务器 | 快速入门 | Swoole 从入门到实战教程
    地址:https://laravelacademy.org/post/9801?page=2

    Packagist / Composer 中国全量镜像
    地址:https://pkg.xyz/

    Host ‘172.18.0.1’ is not allowed to connect to this MySQL server · Issue #275 · docker-library/mysql
    地址:https://github.com/docker-library/mysql/issues/275#issuecomment-812897091

  • 相关阅读:
    发布npm包质量分测试
    面试知识点--基础篇
    去噪扩散概率模型(DDPM)的简单理解
    如何做到低风险的部署与发布?(下)丨IDCF
    SpringBoot集成Prometheus实现监控
    1488. 避免洪水泛滥
    如何查看公网IP?
    产品推荐 - 基于FPGA XC7K325T+DSP TMS320C6678的双目交汇视觉图像处理平台
    java计算机毕业设计VUE商场库存管理系统源码+mysql数据库+系统+lw文档+部署
    Python算法图解——递归(三):打印九九乘法表
  • 原文地址:https://blog.csdn.net/wbsu2004/article/details/126380106