什么是 Rallly ? 
Rallly 是一个免费的小组会议安排工具——使用 Next.js、Prisma 和 TailwindCSS 构建。可用于发现与您的同事或朋友开会的最佳日期,而不需要通过来回发送电子邮件沟通。
 
从思路上看和 Calendso 是类似的,只是更专注于采用多人投票的方式,来决定活动的预约安排。
构建镜像 可以搜索到官方的镜像
但并没有相应的镜像下载
不过官方提供了 Dockerfile ,可以自己下载源代码构建
 老苏可以给大家提供了编译好的镜像,但是需要说明的是,老苏比较懒,如果你想要使用最新的版本,还是自己下代码编译比较好
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 git clone  https://github.com/lukevella/rallly.git    git clone  https://ghproxy.com/github.com/lukevella/rallly.git     cd  rallly      docker build \    --build-arg DATABASE_URL=postgres://your-database/db \    --build-arg NEXT_PUBLIC_BASE_URL=http://localhost:3000 \    -t wbsu2003/rallly:v1 . 
好家伙,1.9G
更重要的编译完成的静态代码,再传递 NEXT_PUBLIC_BASE_URL 参数不起作用。所以需要改造,据说可以通过修改 next.config.js 搞定,不过老苏还是继续使用了常用的占位替换法。
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 FROM  node:lts-alpine as dependenciesRUN  mkdir  -p /usr/src/app ENV  PORT 3000 ARG  DATABASE_URLENV  DATABASE_URL "postgres://your-database/db" WORKDIR  /usr/src/app COPY  package.json /usr/src/app COPY  yarn.lock /usr/src/app COPY  prisma/schema.prisma /usr/src/app RUN  yarn --frozen-lockfile FROM  node:lts-alpine as builderWORKDIR  /usr/src/app COPY  . . COPY  --from=dependencies /usr/src/app/node_modules ./node_modules ARG  NEXT_PUBLIC_BASE_URLENV  NEXT_PUBLIC_BASE_URL "http://localhost:3000" RUN  yarn build FROM  node:lts-alpine as runnerWORKDIR  /usr/src/app ENV  NODE_ENV productionCOPY  --from=builder /usr/src/app/next.config.js ./ COPY  --from=builder /usr/src/app/next-i18next.config.js ./ COPY  --from=builder /usr/src/app/templates ./templates COPY  --from=builder /usr/src/app/public ./public COPY  --from=builder /usr/src/app/.next ./.next COPY  --from=builder /usr/src/app/node_modules ./node_modules COPY  --from=builder /usr/src/app/package.json ./package.json COPY  --from=builder /usr/src/app/prisma/ ./prisma COPY  --from=builder /usr/src/app/replace_api_url.sh ./ RUN  chmod  +x replace_api_url.sh EXPOSE  3000 CMD  ["yarn" , "start" ] 
replace_api_url.sh 是用来替换静态 js 中的变量的
理论上 DATABASE_URL 可以不用替换
 
1 2 3 4 5 6 7 8 9 10 11 #!/usr/bin/env sh      echo  "---replace begin---"      find '/usr/src/app/.next'  -name '*.js'  -exec  sed -i -e 's,postgres://your-database/db,' "$DATABASE_URL " ',g'  {} \;      find '/usr/src/app/.next'  -name '*.js'  -exec  sed -i -e 's,http://localhost:3000,' "$NEXT_PUBLIC_BASE_URL " ',g'  {} \;      echo  "---replace end---"      yarn start 
开始构建
1 2 3 4 5 6 7 8 9 cd  rallly docker build -t wbsu2003/rallly:v2 . 
大概 0.8G,小了一半不止
docker-compose 安装 docker-compose.yml 是在官方的基础上改的,下面👇是个完整的示例
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 version:  "3.3"      services:     rallly_db:        image:  postgres:latest        restart:  always        volumes:          -  ./data:/var/lib/postgresql/data        environment:          -  POSTGRES_USER=postgres          -  POSTGRES_PASSWORD=postgres          -  POSTGRES_DB=db         rallly:        image:  wbsu2003/rallly      restart:  always        command:  sh  -c  "yarn prisma migrate deploy --schema prisma/schema.prisma && ./replace_api_url.sh"        depends_on:          -  rallly_db        ports:          -  4300 :3000        environment:          -  DATABASE_URL=postgres://postgres:postgres@rallly_db:5432/db          -  NEXT_PUBLIC_BASE_URL=http://192.168.0.197:4300          -  SECRET_PASSWORD=%AhUouD&3N^Zc7UTiV*6vdM@^n^Gke%R          -  SUPPORT_EMAIL=wbsu2003@88.com          -  SMTP_HOST=smtp.88.com          -  SMTP_PORT=587          -  SMTP_SECURE=false        -  SMTP_USER=wbsu2003@88.com          -  SMTP_PWD=<第三方邮件客户端密码>  
需要修改的参数老苏做了说明
范围 
默认 
描述 
 
 
NEXT_PUBLIC_BASE_URLhttp://localhost:3000服务器的托管 url,用于创建链接和从客户端进行 api 调用。 
 
DATABASE_URLpostgres://postgres:postgres@rallly_db:5432/dbpostgres 数据库 URL。如果使用 docker-compose 文件,请忽略它,因为它会启动并连接到自己的数据库实例。 
SECRET_PASSWORD- 
用于加密会话数据的长字符串(最少 32 个字符)。 
 
SUPPORT_EMAIL- 
一个电子邮件地址,将显示为所有正在发送的电子邮件的 FROM 电子邮件。 
 
SMTP_HOST- 
SMTP 服务器的主机名 
SMTP_PORT- 
SMTP 服务器的端口 
SMTP_SECUREfalse如果为您的 SMTP 连接启用 SSL,则设置为true 
 
SMTP_USER- 
用于 SMTP 连接的用户名 
 
SMTP_PWD- 
用于 SMTP 连接的密码 
 
然后执行下面的命令安装容器
1 2 3 4 5 6 7 8 9 10 mkdir  -p /volume2/docker/rallly/datacd  /volume2/docker/ralllydocker-compose up -d 
运行 在浏览器中输入 http://群晖IP:4300 就能看到主界面
点 Get Started 开始
先登录
输入邮箱
收到邮件后,点 Log me in 
登录成功后会显示用户名
只有 NEXT_PUBLIC_BASE_URL 采用域名时才行,用局域网 IP 不行
 
开始创建活动
比如选定两天
填上你的信息,所以是否登录并不重要
生成一个活动,将链接分享出去
收到的人点开链接
输入名字或者邮箱地址,选择你希望的时间
手机上的效果
发起者这边能实时看到投票的结果
你可以根据投票的结果来确定活动的安排
参考文档 
lukevella/rallly: Self-hostable doodle poll alternative. Find the best date for a meeting with your colleagues or friends without the back and forth emails.https://github.com/lukevella/rallly 
Koyeb - How to Dockerize and Deploy a Next.js Application on Koyebhttps://www.koyeb.com/tutorials/how-to-dockerize-and-deploy-a-next-js-application-on-koyeb