看,这里有300款斯拉夫鸡尾酒手册,利用NAS部署一套酒吧管理系统
mhr18 2024-12-14 11:11 15 浏览 0 评论
本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:可爱的小cherry
大家好,这里是Cherry,喜爱折腾、捡垃圾、玩数码,热衷于分享NAS、docker玩耍经验~
前言
大家有没有开酒吧的梦想?
在Cherry还小的时候,家里亲戚开过一段时间的酒吧,那时候每天放学就会去酒吧喝点饮料,看着大哥哥、大姐姐们在酒吧里跳舞,听着酒吧的音乐,总是不自觉地认为自己要是能开一家酒吧多好。后来,在抛弃这些不切实际的想法后,又迷上了调酒这个职业,因为觉得够帅。
当然,这一切都没实现,毕竟Cherry不喝酒~
今天为大家介绍的这款项目厉害了,斯拉夫人开发的酒吧管理项目(没错,竟然不是毛子,差评),该项目集成了303款作者收集到的鸡!尾!酒!>调制方法,从外观、成分、顺序、配比等都给出了详细的方案,可以说是有手就能调系列。
项目地址:https://github.com/karlomikus/bar-assistant
项目特性
-包括300多种鸡尾酒配方,并附有详细信息,包括150多种基本成分。
-添加和管理多个酒吧和酒吧成员,使用用户角色进行细粒度用户控制
-用于管理和过滤配料和鸡尾酒的端点
-按ABV、基本成分、标签等过滤食谱
-根据你是否有正确的成分过滤食谱
-详细的鸡尾酒和成分信息
-支持将多个图像分配给资源和图像排序
-根据库存中缺少的成分生成购物清单
-使用Meilisearch自动索引数据
-支持定制鸡尾酒配料替代品
-支持玻璃类型、器皿、标签、成分类别等
-通过URL、JSON、YAML或自定义集合导入鸡尾酒配方
-支持鸡尾酒评级
-创建特定于用户的鸡尾酒收藏,便于参考和分享
-支持鸡尾酒和配料注释
-支持通过公共链接共享食谱,自定义食谱图像和打印
-创建公共栏菜单
-使用用户设置的自定义权限管理自定义API个人访问令牌
-关于食谱和用户口味的详细统计数据
系统部署
本项目使用docker-compose和SSH部署,需要一定技术能力。
一、下载代码
通过finalshell等ssh工具访问nas,这里路径以/volume1/docker/bar为例,然后以此输入以下指令,生成3个文件。
mkdir -p /volume1/docker/bar && cd /volume1/docker/bar
touch {nginx.conf,.env,docker-compose.yml}
二、修改代码
将以下代码复制到 nginx.conf 文件中,这些代码完全不用改动
server {
listen 3000 default_server;
listen [::]:3000 default_server;
server_name _;
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
client_max_body_size 100M;
location /bar/ {
proxy_pass http://bar-assistant:3000/;
}
location /search/ {
proxy_pass http://meilisearch:7700/;
}
location / {
proxy_pass http://salt-rim:8080/;
}
}
将以下代码复制到 .env 文件中,改动第二行
MEILI_MASTER_KEY=masterKey-make-it-long-for-security
BASE_URL=http://localhost:3000 #这里要改为实际访问的地址,如http://192.168.1.1:1234
MEILISEARCH_URL=${BASE_URL}/search
API_URL=${BASE_URL}/bar
将以下代码复制到 docker-compose.yml 文件中,只需要改动倒数第7行的端口
version: "3"
services:
meilisearch:
image: getmeili/meilisearch:v1.4 #
environment:
- MEILI_MASTER_KEY=$MEILI_MASTER_KEY
- MEILI_ENV=production
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:7700"]
interval: 10s
timeout: 5s
retries: 5
volumes:
- meilisearch_data:/meili_data
redis:
image: redis
environment:
- ALLOW_EMPTY_PASSWORD=yes
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 1s
timeout: 3s
retries: 30
bar-assistant:
image: barassistant/server:v3
depends_on:
meilisearch:
condition: service_healthy
redis:
condition: service_healthy
environment:
# - PUID=1000 # Optional
# - PGID=1000 # Optional
- APP_URL=$API_URL
- LOG_CHANNEL=stderr #
- MEILISEARCH_KEY=$MEILI_MASTER_KEY
- MEILISEARCH_HOST=http://meilisearch:7700 #
- REDIS_HOST=redis #
- ALLOW_REGISTRATION=true # 这个改成false就可以禁止用户注册
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000"]
interval: 10s
timeout: 5s
retries: 5
volumes:
- bar_data:/var/www/cocktails/storage/bar-assistant
salt-rim:
image: barassistant/salt-rim:v2
depends_on:
bar-assistant:
condition: service_healthy
environment:
- API_URL=$API_URL
- MEILISEARCH_URL=$MEILISEARCH_URL
- BAR_NAME=$BAR_NAME
- DESCRIPTION=$BAR_DESCRIPTION
- DEFAULT_LOCALE=en-US
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080"]
interval: 10s
timeout: 5s
retries: 5
webserver:
image: nginx:alpine
restart: unless-stopped
depends_on:
bar-assistant:
condition: service_healthy
salt-rim:
condition: service_healthy
meilisearch:
condition: service_healthy
ports:
- 1234:3000 # 这里是唯一需要改动的,在.env里端口是多少,这里就是多少
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf #
volumes:
bar_data:
meilisearch_data:
三、启动项目
依旧在ssh界面,输入以下指令
docker-compose up -d
系统使用
一、注册管理员并登录
如果安装成功,下方打码的地方可以看到版本号
二、管理酒吧,我们开几家店合适?
来先新建一个酒吧,圆一圆曾经的梦!点击右上角的【Create Bar】
填入酒吧名称、介绍、描述等信息即可保存,必填项只有一个名字
除了新建酒吧以外,我们还可以通过邀请码加入别人的酒吧。让别的酒吧老板点击酒吧下的【Toggle invite code】,然后我们在【Join a bar】处填入即可加入。
三、酒吧套餐来了,300+种调酒配方
先看看酒吧有多少种酒吧,满打满算303种,全部都是配餐完成的,拿来就用。如果不够用,我们还可以通过添加配比、流程的方式自定义鸡尾酒套餐。
这里是我们的酒吧调制首页,所有的配方、原料、清单都可以看到
左侧我们随便点击一个菜单进去,看看这配图,看看这配比,看看这操作顺序,绝了。我的脑子已经学会了!
四、酒吧原料管理,进出货都不可少
在【Ingredients】里,我们可以查阅和维护所有的原料,还可以进行进货单管理、打印。
五、酒吧菜单一键生成,格调拉满
相比于点二维码下单,酒吧可不兴整着一套对吧,弄个电子屏,随时更新菜单,拉满格调。我们可以在菜单栏里随意生成单个、多个鸡尾酒套餐,并设置价格。
通过二维码或者网址,可以直观的展示出所有的组合价格。
我的NAS推荐
这里简单介绍一下Cherry日常使用的几台NAS,以及为何选择这些NAS。
核心设备——群晖 DS920
这是Cherry第一台NAS,服役了好多年了,经典的J4125cpu+24G内存,搭配517实现9块18T盘塞满,主要用来玩玩PT的,日常使用的docker和个人资料,基本都存放在这里,因此也是Cherry感情最深的一台设备,但是J4125的性能瓶颈就在这里,容器多了cpu常年90%徘徊,在部署新项目的时候特别不方便。
当然,对于出入门的同学,920不管是价格还是性能都已经不算好的了,可以尝试2盘位的224+,也期待今年有新的NAS问世。
二代目核心设备——威联通QNAP TS-464C2
正因为前面提到群晖920服役时间过长问题,Cherry在入手了一台N5105的软路由后,又将目光看向了搭配同时期N5095的QNAP TS-464C2,作为NAS届的常青树,QNAP的系统其实一直是Cherry所喜爱的,相比于群晖,威联通的系统更值得深入使用和思考,功能点更丰满。
家庭成员利器——绿联DX4600pro
在家庭成员使用过程中,操作更简单,面向群众基础更广的绿联私有云映入眼帘。父母通过APP方式直接上传备份一些教研资料和照片十分方便,同时通过自带的有声书app还能让父母闲暇之余听听小说之类。
生产NAS——自建Unraid
回到项目生产中,考虑在项目部署过程中,经常会出现启动错误、容器异常、版本迭代等问题,这些问题统统需要强大的cpu和多线程来解决,因此就使用双路洋垃圾组建了一台unraid,用于生产环境使用,也是我的项目部署主力机。
欢迎朋友们评论区讨论留言。我会定期更新关注NAS使用方法、开源软件与Docker软件、游戏与生活相关内容,喜欢的朋友请关注、点赞、留言支持。
本文收录在值得买 「优质内容激励计划·每周精选」,点击了解计划详情>>>
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
- 上一篇:基于Redis+Lua脚本的库存减扣方案
- 下一篇:最详细的微信商城小程序搭建教程!
相关推荐
- MYSQL数据同步(mysql数据同步方式)
-
java开发工程师在实际的开发经常会需要实现两台不同机器上的MySQL数据库的数据同步,要解决这个问题不难,无非就是mysql数据库的数据同步问题。但要看你是一次性的数据同步需求,还是定时数据同步,亦...
- SpringBoot+Redis实现点赞收藏功能+定时同步数据库
-
由于点赞收藏都是高频率的操作,如果因此频繁地写入数据库会造成数据库压力比较大,因此采用redis来统计点赞收藏浏览量,之后定时一次性写入数据库中,缓解数据库地压力。一.大体思路设计redis中的储存结...
- 双11订单洪峰:Codis代理层如何扛住Redis集群搞不定的120万QPS?
-
双11订单洪峰下的技术挑战每年的双11购物节,都是对电商平台技术架构的极限考验。当零点钟声敲响,海量用户瞬间涌入,订单量呈指数级增长,系统需要承受每秒数十万甚至上百万次的请求。作为电商系统的核心组件之...
- 基于spring boot + MybatisPlus 商城管理系统的Java开源商城系统
-
前言Mall4j项目致力于为中小企业打造一个完整、易于维护的开源的电商系统,采用现阶段流行技术实现。后台管理系统包含商品管理、订单管理、运费模板、规格管理、会员管理、运营管理、内容管理、统计报表、权限...
- 商品券后价产品设计方案(显示券后价)
-
如何设计一套高效、准确且稳定的券后价计算系统,是电商产品设计中的关键挑战之一。本文详细介绍了商品券后价的产品设计方案,从背景目标、功能设计、系统实现逻辑到异常处理机制等多个方面进行了全面阐述。一、背景...
- 外观(门面)模式-Java实现(java 门面模式)
-
定义外观模式(FacadePattern),也叫门面模式,原始定义是:为了子系统中的一组接口提供统一的接口。定义一个更高级别的接口,使子系统更易于使用。大大降低应用程序的复杂度,提高了程序的可维护性...
- Mall - 用 SpringBoot 实现一个电商系统
-
目前最为主流的Web开发技术,包括SpringBoot、MyBatis、MongoDB、Kibina、Docker、Vue等,都是开发者十分需要掌握的技术。有没有一个全面而又实际的项目,能把这...
- 腾讯云国际站:哪些工具能实现可视化运维?
-
本文由【云老大】TG@yunlaoda360撰写开源工具Grafana:开源的可视化平台,可与Prometheus、Elasticsearch、MySQL等多种数据源集成,将复杂监控数据转化...
- 系统稳定性保障全流程实战:事前、事中、事后 Java 代码详解
-
在互联网架构中,系统稳定性是生命线。本文基于“事前预防、事中管控、事后复盘”三阶段模型,结合Java实战代码,深度解析如何构建高可用系统,让你的服务稳如磐石!一、事前:未雨绸缪,筑牢防线1.发...
- Java面试题:拆分微服务应该注意哪些地方方,如何拆分?
-
在拆分微服务时,需要综合考虑业务、技术和组织等多方面因素,以下是关键注意事项及拆分策略的详细说明:一、拆分注意事项1.业务边界清晰化单一职责原则:每个服务应专注于单一业务能力,例如订单服务仅处理订单...
- 软件性能调优全攻略:从瓶颈定位到工具应用
-
性能调优是软件测试中的重要环节,旨在提高系统的响应时间、吞吐量、并发能力、资源利用率,并降低系统崩溃或卡顿的风险。通常,性能调优涉及发现性能瓶颈、分析问题根因、优化代码和系统配置等步骤,调优之前需要先...
- Docker Compose实战,多容器协同编排的利器,让开发部署更高效!
-
开篇导读你是否有过这样的经历?启动一个项目,数据库、Redis、Web服务得一个个敲dockerrun?想让别人复现你的开发环境,却得发一堆复杂的启动命令?明明都是容器,为什么不能“一键启动”所...
- 如何设计Agent的记忆系统(agent记忆方法)
-
最近看了一张画Agent记忆分类的图我觉得分类分的还可以,但是太浅了,于是就着它的逻辑,仔细得写了一下在不同的记忆层,该如何设计和选型先从流程,作用,实力和持续时间的这4个维度来解释一下这几种记忆:1...
- 不了解业务和技术术语怎么做好产品和项目?
-
基础技术术语术语分类解释API开发技术应用程序接口,不同系统间数据交互的协议(如支付接口、地图接口)。SDK开发工具软件开发工具包,包含API、文档和示例代码,帮助快速接入服务。RESTfulAPI...
- Docker 架构详解与核心概念实战图解:一文读懂容器的前世今生
-
不懂Docker架构,你只是“用容器的人”;理解了它的底层逻辑,才能成为真正的高手!在学习Docker之前,很多同学可能会陷入一个误区:“反正我用dockerrun就能跑起服务,架构这种...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)