食谱管理和餐饮计划应用Mealie

news2024/10/7 18:22:29

在这里插入图片描述

放假除了休闲娱乐,也不能忘了美食

什么是 Mealie ?

Mealie 是一个自托管的食谱管理和餐饮计划应用,具有 RestAPI 后端和基于 Vue 构建的响应式前端应用,为整个家庭提供愉快的用户体验。通过提供 URL,您可以轻松将食谱添加到数据库中,Mealie 将自动导入相关数据;或者使用 UI编辑器添加家庭食谱。Mealie 还提供了一个 API,用于与第三方应用程序进行交互。

安装

ghcr.io 镜像下载

官方的镜像没有发布在 docker hub,而是在 ghcr.io,所以直接用命令行来安装。

本文写作时,latest 对应的版本为 v1.3.2

SSH 客户端中依次执行下面的命令

# 下载镜像
docker pull ghcr.io/mealie-recipes/mealie:latest

如果没有科学上网,很可能会拉不动,可以试试 docker 代理网站:https://dockerproxy.com/,但是会多几个步骤

# 如果拉不动的话加个代理
docker pull ghcr.dockerproxy.com/mealie-recipes/mealie:latest

# 重命名镜像(如果是通过代理下载的)
docker tag ghcr.dockerproxy.com/mealie-recipes/mealie:latest ghcr.io/mealie-recipes/mealie:latest

# 删除代理镜像(如果是通过代理下载的)
docker rmi ghcr.dockerproxy.com/mealie-recipes/mealie:latest

当然代理网站也不是什么时候都好使,有时候也会报错,例如下面👇这样的

Error response from daemon: received unexpected HTTP status: 500 Internal Server Error

所以有一个稳定的科学上网环境还是很重要的

docker cli 安装

Mealie 支持 SQLitePostgreSQL 两种数据库,官方推荐的是 SQLite,当然如果你的用户超过 20 人时,PostgreSQL 支持更多的并发用户

# 新建文件夹 mealie 和 子目录
mkdir -p /volume1/docker/mealie/data

# 进入 mealie 目录
cd /volume1/docker/mealie

# 运行容器
docker run -d \
   --restart unless-stopped \
   --name mealie \
   --memory=1000M \
   -p 9925:9000 \
   -v $(pwd)/data:/app/data/ \
   -e ALLOW_SIGNUP=true \
   -e PUID=1000 \
   -e PGID=1000 \
   -e TZ=Asia/Shanghai \
   -e MAX_WORKERS=1 \
   -e WEB_CONCURRENCY=1 \
   -e BASE_URL=http://192.168.0.197:9925 \
   ghcr.io/mealie-recipes/mealie:latest
可变缺省值描述
PUID911主机操作系统和容器之间的 UserID 权限
PGID911主机操作系统和容器之间的 GroupID 权限
ALLOW_SIGNUPtrue允许用户无需令牌即可注册
TZUTC必须设置为在服务器上获取正确的日期/时间
MAX_WORKERS置要使用的最大 workers 数量。默认未设置意味着无限制
WEB_CONCURRENCY2覆盖 workers 数量的自动定义
BASE_URLhttp://localhost:8080用于通知

更多环境变量参数设置,请参考官方文档:https://docs.mealie.io/documentation/getting-started/installation/backend-config/

docker compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: "3.7"

services:
  mealie:
    image: ghcr.io/mealie-recipes/mealie:latest
    container_name: mealie
    restart: always
    ports:
        - "9925:9000"
    deploy:
      resources:
        limits:
          memory: 1000M
    volumes:
      - ./data:/app/data/
    environment:
    # Set Backend ENV Variables Here
      - ALLOW_SIGNUP=true
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - MAX_WORKERS=1
      - WEB_CONCURRENCY=1
      - BASE_URL=http://192.168.0.197:9925

然后执行下面的命令

# 新建文件夹 mealie 和 子目录
mkdir -p /volume1/docker/mealie/data

# 进入 mealie 目录
cd /volume1/docker/mealie

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

第一次启动的时间比较长

老苏的机器大约用了 4 分钟左右

当日志中看到 INFO: Uvicorn running on http://0.0.0.0:9000 (Press CTRL+C to quit) 时,在浏览器中输入 http://群晖IP:9925 就能看到主界面

第一次登陆,你可以选择注册账号,也可以用系统默认的

默认用户名: changeme@example.com,密码:MyPassword

登陆成功后的主界面

导入菜谱

在导入菜谱前,不得不提一下 RecipeML

什么是 RecipeML ?

RecipeML 是一种用于描述食谱(烹饪配方)的标记语言。它是一种基于 XML(可扩展标记语言)的语言,旨在提供一种结构化的方式来表示食谱的各个方面,例如食材、量词、烹饪步骤和时间等,方便食谱的存储、共享和利用。

国外支持 RecipeML 的网站很多,你可以在👇这些网站上找到各种美食食谱

以下站点由人工智能推荐,并未一一验证,主要原因就是看不懂 😂

  1. Allrecipes(https://www.allrecipes.com):Allrecipes 是一个知名的美食社区网站,提供了大量的食谱和烹饪教程。它支持食谱的标记和搜索,并提供方便的筛选和分类功能。

  2. Food Network(https://www.foodnetwork.com):Food Network 是一个专注于美食和烹饪的媒体平台。它提供了丰富的食谱资源,并支持使用标记语言进行食谱的展示和搜索。

  3. Epicurious(https://www.epicurious.com):Epicurious 是一个专注于食谱和烹饪的网站,提供了各种美食食谱和烹饪技巧。它支持使用标记语言编写和展示食谱。

  4. Bon Appétit(https://www.bonappetit.com):Bon Appétit 是一个美食杂志和网站,提供了丰富的食谱和烹饪内容。它支持使用自定义的标记语言来编写和展示食谱。

你可以在这些网站上搜索、浏览和分享各种美食食谱。老苏找了一篇 奶油烤土豆(Creamy au Gratin Potatoes),原文地址:https://www.allrecipes.com/recipe/15925/creamy-au-gratin-potatoes/

导入成功后,左侧是食材,右侧是步骤

手动创建

老苏没有找到中文支持 RecipeML 的网站,有知道的朋友给推荐一下。

中文的菜谱目前只能手动创建了

接下来按分类分别填写就可以了

保存即可,如果配上图片,看起来会养眼

AI 也推荐了几个中文网站,虽然不支持 RecipeML格式,但它们提供了大量的中文食谱内容,大家学起来吧

  1. 下厨房(https://www.xiachufang.com):这是一个非常受欢迎的中文食谱分享网站,提供了大量的中文食谱和烹饪技巧。

  2. 美食杰(https://www.meishij.net):这个网站也是一个流行的中文食谱平台,用户可以搜索和分享各种菜谱。

  3. 中华菜谱网(https://www.food365.com.cn]):这是一个专注于中华菜系的食谱网站,提供了丰富的中文食谱和烹饪技巧。

  4. 美食圈(https://www.meishiq.com):这个网站是用来分享和浏览美食菜谱、获取美食资讯、交流美食圈子以及提供健康养生和厨房经验的。

参考文档

mealie-recipes/mealie: Mealie is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family. Easily add recipes into your database by providing the url and mealie will automatically import the relevant data or add a family recipe with the UI editor
地址:https://github.com/mealie-recipes/mealie

Home - Mealie
地址:https://docs.mealie.io/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1637636.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

知识产权 | 守护科技创新之光,共筑知识产权长城

2024年4月26日,迎来了一年一度的世界知识产权日,今年的主题是:“立足创新创造,构建共同未来。” 易我科技是一家专注于数据安全产品研发、生产、销售、服务一体化的高新技术软件企业。易我科技自成立以来,始终秉持尊重…

贝叶斯回归

1. 贝叶斯推断的定义 简单来说,贝叶斯推断 (Bayesian inference) 就是结合“经验 (先验)”和“实践 (样本)”,得出“结论 (后 验)”。 2. 什么是先验? 贝叶斯推断把模型参数看作随机变量。在得到样本之前,根据主观经验和既有知…

微视网媒:引领新媒体时代的视觉先锋

在信息爆炸的时代,内容消费的方式日新月异,而“微视网媒”正是这场媒体变革中的佼佼者。凭借其独特的视角、精湛的制作和广泛的传播渠道,微视网媒不仅改变了人们获取信息的方式,更在不断地塑造着未来的媒体生态。 一、创新内容&am…

STM32中断之TIM定时器详解

系列文章目录 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. TIM简述 2. 定时器类型 2.1 基本定时器 2.2 通用定时器 2.3 高级定时器 3. 定时中断 4. 代码示例1 5. 代码示例2 1. TIM简述 定时器的基本功能:定时器可以在预定的时间间隔内产生周…

LeetCode 198—— 打家劫舍

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 此题使用动态规划求解,假设 d p [ i ] [ 0 ] dp[i][0] dp[i][0] 代表不偷窃第 i i i 个房屋可以获得的最高金额,而 d p [ i ] [ 1 ] dp[i][1] dp[i][1] 代表偷窃第 i i i 个房屋可以获…

2024年谷歌Google广告开户是什么政策?

2024年谷歌Google广告依然是众多企业拓展市场、提升品牌影响力的重要渠道,随着谷歌政策的不断更新与优化,以及对第三方cookie逐步禁用的决定,如何高效地在这一平台上开展广告活动,成为每一家企业必须面对的战略挑战。云衔科技作为…

【平台开发】MTK6833 实现lk下CQE接口移植 - cmdq irq

1.cmdq_irq 检测中断bit 2.目前遇到问题 任务执行后,没有触发对应中断,伴有错误发生,但任务完成标志位能检测到 寄存器CQIS,CQDQS等均为0,CQTCN为任务完成寄存器看到置1,CQTERRI检测到8000错误 错误详情如下&#xf…

基于SpringBoot+Vue外卖系统设计和实现(源码+LW+部署讲解)

🌹作者简介:✌全网粉丝10W,csdn特邀作者、博客专家、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 🌹 主要…

day7 c++

整理代码 1、unique_ptr 指针 #include <iostream> #include <memory> using namespace std; class Demo {public:Demo(){cout<<"无参构造"<<endl;}~Demo(){cout<<"Demo的析构函数"<<endl;} };int main() {//unique…

(1)探索 SpringAI - 基本概述

人工智能简介 A system is ability to correctly interpret external data, to learn from such data, and to use those learnings to achieve specific goals and tasks through flexible adaptation. 翻译&#xff1a;系统正确解释外部数据的能力&#xff0c;从这些数据中学…

【C语言/数据结构】经典链表OJ习题~第二期——链中寻环

&#x1f388;&#x1f388;&#x1f388;欢迎采访小残风的博客主页&#xff1a;残风也想永存-CSDN博客&#x1f388;&#x1f388;&#x1f388; &#x1f388;&#x1f388;&#x1f388;本人码云 链接&#xff1a;残风也想永存 (FSRMWK) - Gitee.com&#x1f388;&#x1f…

AI家居设备的未来:智能家庭的下一个大步

&#x1f512;目录 ☂️智能家居设备的发展和AI技术的作用 ❤️AI技术实现智能家居设备的自动化控制和智能化交互的依赖 AI家居设备的未来应用场景 &#x1f4a3;智能家庭在未来的发展和应用前景 &#x1f4a5;智能家居设备的发展和AI技术的作用 智能家居设备的发展和AI技术的…

Tokitsukaze and Average of Substring

原题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 前缀和。 开一个int类型的前缀和数组pre[30][N]&#xff08;pre[i][j]表示某字符转成的数字 i 在一段区间的前缀个数。因为字母表有‘a’~z…

解析Python中获取当前线程名字的方法及多线程编程实践

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Python 获取当前线程的名字 在多线程编程中&#xff0c;了解当前线程的名字是一项重要的任…

【Linux学习】(1)Linux环境安装|Xshell安装|创建普通用户

前言 从本文开始我们将进入Linux的学习&#xff0c;在学习Linux之前我们需要简单了解什么是Linux&#xff0c;和安装环境。 一、Linux的简单了解 1、Linux的来源 UNIX操作系统应用于高校和研究机构&#xff0c;并且收费。我们的主人公林纳斯托瓦兹&#xff08;21岁&#xff0…

platformd device、driver注册过程

本文以smsc911x驱动为例 platform_device注册过程 该设备被定义在dts里面了 参考文章设备树节点转换为设备节点device_node、和平台设备资源platform_device_设备树节点转换成平台设备-CSDN博客 dts里面的节点会被转换为device_node和platform_device(并不是所有节点都会被转…

Pandas Series的运算原来这么简单

Series的运算主要包括加法、减法、乘法和除法等基本算术运算。这些运算通常是按照索引对应计算的&#xff0c;如果两个Series的索引不同&#xff0c;则结果中对应位置将填充为NaN&#xff08;空值&#xff09;。 需要注意的是&#xff0c;在进行Series运算时&#xff0c;需要确…

升级 Vite 5 出现警告 The CJS build of Vite‘s Node API is deprecated

错误描述 vue3-element-admin 项目将Vite4 升级至 Vite5 后,项目运行出现如下警告: The CJS build of Vites Node API is deprecated. See https://vitejs.dev/guide/troubleshooting.html#vite-cjs-node-api-deprecated for more details.图片 问题原因 Vite 官方弃用 C…

PID详解汇总

一、参照文章 PID的各种算法优缺点 二、位置式PID 优点:静态误差小,溢出的影响小。 缺点:计算量很大&#x

java-spring-mvc(服务端接收客户端传参)

目录 &#x1f3af; 服务端接收参数 ✨HttpServletRequest接收 ✨ 声明参数接收 ✨声明pojo类来接收 &#x1f52a;小试牛刀 &#x1f3af; 服务端接收参数 ✨HttpServletRequest接收 HttpServletRequest是Java Servlet规范中定义的一个接口&#xff0c;它提供了与HTTP请求…