nextjs 有更优雅的自部署方案么? - V2EX
ethusdt
0.01D

nextjs 有更优雅的自部署方案么?

  •  
  •   ethusdt
    FaiChou Dec 31, 2025 4570 views
    This topic created in 136 days ago, the information mentioned may be changed or developed.

    官方文档 Nextjs Deploying

    用 nextjs 部署到自己服务器有点麻烦的,必须部署到 vercel 这种 serverless 才方便。

    我使用过笨办法,在服务器上克隆整个项目,服务器执行 build ,然后 start ( tmux/screen/systemctl )。

    或者麻烦一点用 docker 打包一个镜像,配置 github action 的 ci ,某个打包分支有提交会自动打包镜像,服务器再 pull 镜像就比较方便了。但还是要折腾一下 ci 和 docker 。

    或者自己本地打包后 rsync 到服务器,但要踩一下 standalone 之类的坑( node runtime 依赖 node_modules )。

    难道就没优雅一点的么?

    web 页面和 server api 都在一块确实好用,对前端入门后端来讲也算个不错的选择。

    23 replies    2026-04-14 06:46:10 +08:00
    GzhiYi
        1
    GzhiYi  
       Dec 31, 2025   2
    github + docker 不是很好了吗?推送后就自动构建部署无感部署
    rocmax
        2
    rocmax  
       Dec 31, 2025 via Android
    ethusdt
        3
    ethusdt  
    OP
       Dec 31, 2025
    @rocmax 之前这个官方的镜像模板有 Docker volumes 权限问题。不确定是否有改好没。
    NNNNzs
        4
    NNNNzs  
       Dec 31, 2025
    @GzhiYi 我就是这么部署的,具体的配置可以参考我的项目
    @ethusdt https://github.com/NNNNzs/react.nnnnzs.cn
    kulove
        5
    kulove  
       Dec 31, 2025 via Android
    不太有 我现在 vercel 每月两百刀左右的费用 上个月找了两三种替代方案 比如 railway 都差点意思 有的测试没问题 但生产一切换就不行了
    woodchen
        6
    woodchen  
       Dec 31, 2025
    我一般就是 github 打包 docker, nextjs 使用 standalone 模式, 稳定后还是比较方便的. 也可以集成 dokploy 自动构建部署.

    https://www.sunai.net/t/topic/352

    https://github.com/woodchen-ink/ipinfo/blob/master/Dockerfile

    供参考
    doveyoung
        7
    doveyoung  
       Dec 31, 2025
    最近才试过,standalone + docker ,Dockerfile 里要注意把静态文件也拷贝一份,用的 node:22-alpine 镜像,最终大小在 300M 。
    在 vercel 部署的话,好像不遵循 standalone ,我单独做了个 build:vercel 的编译命令
    334132462
        8
    334132462  
       Dec 31, 2025
    如果能解决网络问题 dokku 是一个很不错的方案
    tianjiyao
        9
    tianjiyao  
       Dec 31, 2025
    我都是免费蹭 cloudflare 的额度,比 vercel 方便多了。。
    lscho
        10
    lscho  
       Dec 31, 2025
    github + docker 就是最好的方式
    cqx2005
        11
    cqx2005  
       Dec 31, 2025
    frontend:
    container_name: frontend
    command: /bin/bash -c "cd /app && ./node_modules/.bin/next start"
    restart: always
    image: node:20.18.0
    environment:
    TZ: Asia/Shanghai
    NODE_ENV: production
    logging:
    options:
    max-size: "10m"
    max-file: "10"
    ports:
    - "3000:3000"
    volumes:
    - "./frontend:/app"
    C64NRD
        12
    C64NRD  
       Dec 31, 2025
    给全栈项目写了个部署的命令行工具( github+docker ) https://nodebbs.com/topic/58
    wuzhanggui
        13
    wuzhanggui  
       Dec 31, 2025
    我是前后端一起的,github 上配个 ci ,配的时候是麻烦,但是一劳永逸,提交代码了就部署上去了
    参考我的 https://github.com/wurencaideli/dumogu-admin
    bbbblue
        14
    bbbblue  
       Dec 31, 2025
    我几个全是官方 docker 模版部署的
    但是自己部署就是坑。。
    很多特性自部署是负优化 比如 static 生成(不是全部 static 导出) ppr 这类 缓存相关( vercel 会把他们部署到边缘节点去 自己 docker 部署就全在内存里了) 都会导致内存大量增加。。。一个总共加起来不到 100 个页面,十来个 route 的 nextjs 服务开着这些功能能吃掉上 G 内存。。。
    rocmax
        15
    rocmax  
       Dec 31, 2025 via Android
    @ethusdt 我司从 nextjs13 开始就使用 standalone 模式部署在 eks ,你说的 volume 权限是什么场景?
    如果愿意折腾的话有开源的部署方案 https://opennext.js.org/ 但我觉得这么搞不如给 vercel 交钱。
    ethusdt
        16
    ethusdt  
    OP
       Dec 31, 2025
    @rocmax #15 依稀记得之前踩过的坑是这样的:docker build 时候用的 root 权限,但是最终 dockercompose 运行时候镜像内部用户降权无法访问一些资源。并且 volumn 卷权限问题表现不一致,服务器经常用 root 来跑,而本地 mac 环境又不是 root 运行 docker 。可能是 Dockerfile 内部这个 nextjs user 权限导致的,即使配置了 gid/uid 也是有点问题。忘记当时是怎么解决了,可能 AI 给解决了,当时没查下到底是啥问题。
    minmaxflow
        17
    minmaxflow  
       Dec 31, 2025
    我最近也碰到一样的问题,我是因为用户在国内,项目部署在阿里云上,使用 ansible(rsync) 配合 standalone 模式, 使用 nginx+pm2, 是比较繁琐。
    frayesshi1
        18
    frayesshi1  
    PRO
       Jan 1
    直接 tmux+npm run
    keithwhisper
        19
    keithwhisper  
       Jan 1
    我推荐用 Coolify 部署
    https://coolify.io/
    tangxiangpi325
        20
    tangxiangpi325  
       Jan 1 via Android
    coolify + vps + 容器,非常简单。vercel 玩玩可以,跑生产费用惊人
    lmoon
        21
    lmoon  
       Jan 1
    dokploy 或者 coolify ,最近在用 dokploy ,感觉很不错
    gargar
        22
    gargar  
       Jan 2
    小应用,cloudflare 的羊毛够我薅的了
    avenger
        23
    avenger  
       Apr 14
    不好意思啊,挖个坟

    目前 vercel 每天访问量 uv 500 不到,一个月要花 $150 是不是有点高

    请教下 op 后面转移到了哪里?
    About     Help     Advertise       API     FAQ     Solana     2923 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 67ms UTC 15:09 PVG 23:09 LAX 08:09 JFK 11:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86