如何在Docker容器中升级Strapi?

如何在Docker容器中升级Strapi?,docker,strapi,Docker,Strapi,我和Docker compose一起下水了。看了之后,我还是不知道是否要升级到下一个版本,我应该选择什么方法: 在Strapi项目目录下,执行npm install Strapi@-g和npm install Strapi@--save docker exec-it sh,导航到Strapi项目目录,然后执行npm install Strapi@-g和npm install Strapi@--save 都没有 在本地开发者树中,更新package.json文件中的包版本。本地运行npm安装或纱线

我和Docker compose一起下水了。看了之后,我还是不知道是否要升级到下一个版本,我应该选择什么方法:

  • 在Strapi项目目录下,执行
    npm install Strapi@-g
    npm install Strapi@--save
  • docker exec-it sh
    ,导航到Strapi项目目录,然后执行
    npm install Strapi@-g
    npm install Strapi@--save
  • 都没有
  • 在本地开发者树中,更新
    package.json
    文件中的包版本。本地运行
    npm安装
    纱线安装
    。启动您的应用程序。验证它是否有效。运行您的测试。修复升级中的任何兼容性问题。在没有Docker参与的情况下完成所有这些

  • 重新运行
    docker build.
    以使用新的包依赖项重建docker映像

  • 停止旧容器,将其删除,然后使用新图像运行新容器

  • 一般来说,您不应该在正在运行的容器中安装任何东西。删除容器是一项非常常规的工作,当您这样做时,容器中的任何内容都将丢失


    Docker中有一种常见的“模式”,即运行节点,绑定将应用程序装入其中,然后在
    Node\u模块
    目录上装入匿名卷。对于日常开发,我发现只在主机上安装Node要简单得多(它实际上是一个
    apt get install
    brew install
    命令)。如果您正在使用此面向Docker的设置,则
    节点模块的匿名卷将不会注意到您已更改了
    节点模块的
    目录,并且您必须重新运行
    Docker build
    并删除和重新创建容器。

    TLDR:3,而2的方向正确

    官方文件对我来说也是第一次不清楚。 下面是docker compose上下文中从3.0.5到3.1.5的分步指南

    它试图尽可能地遵循官方文档,但包括一些额外的(在我的情况下是强制性的)步骤

    升级Strapi
    • 以下内容涉及通过
      docker compose使用的
      strapi/strapi
      (非
      strapi/base
      )docker图像
    • 重要升级Docker映像版本不会升级Strapi版本。
      • Strapi NodeJS应用程序仅在第一次启动时构建自身,前提是检测到空文件夹并且通常存储在装入的卷中。看
    • 要升级,首先按照指南(和)重建实际的Strapi NodeJS应用程序。其次,更新docker标记以匹配版本以避免混淆
    从3.0.5升级到3.1.5的示例:

    #https://strapi.io/documentation/developer-docs/latest/guides/update-version.html
    #确保服务器在迁移结束之前未运行
    ##这是一个不明确的指示。停止Nginx以阻止对应用程序的访问,而不停止Strapi本身。
    docker compose exec strapi bash#进入正在运行的容器
    ##另一种方法是“docker compose stop strapi”,并使用“docker”手动重构容器选项,用“---entrypoint/bin/bash”覆盖入口点`
    #几张支票
    纱线strapi版本#已安装当前版本
    纱线信息strapi#npm信息strapi@3.1.x版本#可用版本
    纱线-版本#npm-版本
    纱线列表#npm列表
    cat package.json
    #升级您的依赖项
    sed-i的|“3.0.5”|“3.1.5”| g'package.json和cat package.json
    纱线安装#npm安装
    纱线斜纹版
    #打破改变?请参阅特定版本的迁移指南!
    ## https://strapi.io/documentation/developer-docs/latest/migration-guide/migration-guide-3.0.x-to-3.1.x.html
    ##定义ADMINJWT令牌
    ##更新管理员的用户名约束
    docker compose exec db bash
    psqlstrapi-strapi
    --展示表格并描述其中一个
    \dt
    \d strapi_管理员
    ##迁移自定义管理面板插件
    #重建您的管理面板
    rm-rf节点#模块#解决“错误:未找到模块:错误:无法解决”的方法
    纱线成型--清洁#npm运行成型--清洁
    #扩展?
    #启动您的应用程序
    纱线开发#npm运行开发
    #确认并测试,访问URL
    #错误?
    ##错误:ENOSPC:已达到文件监视程序数量的系统限制。。。
    #可以通过在docker主机系统上修改内核参数来解决
    sudo vi/etc/sysctl.conf#fs.inotify.max_user_watches=524288
    sudosysctl-p
    #修改docker compose以反映版本更改并避免混淆!
    docker ps
    vi docker-compose.yml#例如3.0.5>3.1.5
    docker合成-强制重新创建-无deps-d strapi
    # ... 并在不再需要时删除旧的docker映像。
    

    另外,我们可以通过以下方式共同改进文档。发出拉取请求

    您似乎有两个问题。A) 我应该升级吗?B) 我应该如何升级?我认为你需要提供更多的信息来得到一个问题的答案,也许一个非常具体的问题比一般性的建议更好。对于B,我认为您可能还需要更多地解释您的配置。