首先,先看下官方文档

懒猫微服-Python 应用配置详解

懒猫微服-移植一个应用

然后,看下MediaCMS的Docker安装文档

MediaCMS的Docker安装文档

MediaCMS

image-20250527225308226

image-20250527225247801

现代、功能齐全的开源视频和媒体内容管理系统

一个内容管理系统,专为满足现代网络平台查看和分享媒体的需求而开发

支持多种媒体类型:视频、音频、图片

多样的分类方式:分类、标签、自定义

灵活的分享选项:社交媒体分享、生成嵌入代码

强大的搜索功能:实时搜索支持

数据完全自控:支持自托管

多种发布模式:公开、私密、未列出、自定义

用户管理灵活:开放注册、邀请制、关闭注册等

配置高度可定制:可更换 logo、字体、样式,添加页面

响应式设计,适配各类设备

支持明暗主题切换

A demo is available at https://demo.mediacms.io

默认用户名和密码在下发配置文件中的ADMIN_USER/ADMIN_PASSWORD。

MediaCMS只能通过上传视频添加媒体。

MediaCMS在上传完成视频后,需要一段时间占用CPU转码,文件越大,转码时间越长。

lzc-build.yml

然后编写下lzc-build.yml文件

# lzc-build.yml

# 指定 lpk 包的输出位置
pkgout: ./
# 指定应用的图标文件路径
icon: ./icon.png
# 指定应用的 manifest 文件路径
manifest: ./lzc-manifest.yml

lzc-manifest.yml

再编写下lzc-manifest.yml文件:

lzc-sdk-version: '0.1'

# 应用的基本信息
name: MediaCMS
package: cloud.lazycat.app.mediacms
version: '3.0.1'
description: A content management system developed to meet the needs of modern web platforms for viewing and sharing media.

# application 作为一个特殊的容器运行
application:
  # 配置应用的子域名,最终访问地址将是 http://mediacms.${LAZYCAT_BOX_DOMAIN}
  subdomain: mediacms
  # 配置路由规则,将根路径的HTTP请求转发到 mediacms 服务的80端口
  background_task: true
  multi_instance: false
  oidc_redirect_path: /auth/oidc.callback
  gpu_accel: false
  kvm_accel: false
  usb_accel: false
  routes:
    - /=http://mediacms.cloud.lazycat.app.mediacms.lzcapp:80

# 定义应用所需的服务
services:
  # 主应用服务
  mediacms:
    image: registry.lazycat.cloud/xxx/mediacms/mediacms:dbaae10c4c7dd8e9
    # 新增:添加重启策略。如果应用启动失败,则自动重启。
    # 防止数据库完全就绪前尝试连接而导致的启动失败
    restart: on-failure
    # 依赖于 db 和 redis 服务,确保它们先启动
    depends_on:
      - db
      - redis
    # 挂载持久化目录,用于存放上传的媒体文件
    binds:
      - /lzcapp/run/mnt/home/${LAZYCAT_BOX_NAME}/mediacms/mediacms-data:/home/mediacms.io/mediacms/media_files
    # 配置环境变量
    environment:
      - POSTGRES_DB=mediacms
      - POSTGRES_USER=mediacms
      - POSTGRES_PASSWORD=strongpwd
      - POSTGRES_HOST=db
      - REDIS_HOST=redis
      - ADMIN_USER=admin
      - [email protected] # 邮箱地址
      - ADMIN_PASSWORD=tkQuHfBsnZK44ZoFCTZ
      - FRONTEND_HOST=http://mediacms.${LAZYCAT_BOX_DOMAIN}

  # 数据库服务
  db:
    image: registry.lazycat.cloud/xxx/library/postgres:6c5ce5405e537c88
    # 为数据库服务也添加重启策略,增加系统健壮性
    restart: on-failure
    environment:
      - POSTGRES_DB=mediacms
      - POSTGRES_USER=mediacms
      - POSTGRES_PASSWORD=strongpwd # !!重要!! 请确保与上面 mediacms 服务中的密码一致
    # 挂载持久化目录,用于存放数据库文件
    binds:
      - /lzcapp/run/mnt/home/${LAZYCAT_BOX_NAME}/mediacms/mediacms-pg:/var/lib/postgresql/data
    # 新增:健康检查配置
    health_check:
      test:
        - CMD-SHELL
        # 使用 pg_isready 检查 mediacms 数据库和用户是否就绪
        - pg_isready -d mediacms -U mediacms
      # 给予数据库最长 360 秒的启动准备时间
      start_period: 360s

  # Redis 服务
  redis:
    image: registry.lazycat.cloud/xxx/library/redis:7a33c3761b4ee2ac
    # 为 Redis 服务也添加重启策略
    restart: on-failure
    # 新增:健康检查配置
    health_check:
      test:
        - CMD-SHELL
        # 使用 redis-cli ping 命令检查 Redis 服务是否就绪
        - redis-cli ping
      # 给予 Redis 最长 180 秒的启动准备时间
      start_period: 180s

获取下mediacsm的logo,可以通过这个插件获取:

image-20250527224526681

如果是自己用,直接拉公网镜像也可以,如果要上传应用商店

需要将镜像推送至官方仓库,然后替换镜像ID。

lzc-cli appstore copy-image mediacms/mediacms:latest
lzc-cli appstore copy-image postgres:15-alpine
lzc-cli appstore copy-image redis:7-alpine

打包

进入mediacms目录,执行

lzc-cli project build

会在当前目录生成cloud.lazycat.app.mediacms-v3.0.1.lpk文件,双击安装即可。

需要查看容器日志的话:

cd /data/app/
lzc-docker ps -a | grep out

发布命令

lzc-cli appstore publish ./your-app.lpk