nextjs 有更优雅的自部署方案么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
ethusdt
0.01D
V2EX    程序员

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

  •  
  •   ethusdt
    FaiChou 19 小时 27 分钟前 1840 次点击

    官方文档 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 都在一块确实好用,对前端入门后端来讲也算个不错的选择。

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

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

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

    供参考
    doveyoung
        7
    doveyoung  
       17 小时 16 分钟前
    最近才试过,standalone + docker ,Dockerfile 里要注意把静态文件也拷贝一份,用的 node:22-alpine 镜像,最终大小在 300M 。
    在 vercel 部署的话,好像不遵循 standalone ,我单独做了个 build:vercel 的编译命令
    334132462
        8
    334132462  
       15 小时 57 分钟前
    如果能解决网络问题 dokku 是一个很不错的方案
    56way
        9
    56way  
       15 小时 51 分钟前
    我都是免费蹭 cloudflare 的额度,比 vercel 方便多了。。
    lscho
        10
    lscho  
       15 小时 40 分钟前
    github + docker 就是最好的方式
    cqx2005
        11
    cqx2005  
       15 小时 13 分钟前
    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  
       15 小时 3 分钟前
    给全栈项目写了个部署的命令行工具( github+docker ) https://nodebbs.com/topic/58
    wuzhanggui
        13
    wuzhanggui  
       14 小时 56 分钟前
    我是前后端一起的,github 上配个 ci ,配的时候是麻烦,但是一劳永逸,提交代码了就部署上去了
    参考我的 https://github.com/wurencaideli/dumogu-admin
    bbbblue
        14
    bbbblue  
       13 小时 55 分钟前
    我几个全是官方 docker 模版部署的
    但是自己部署就是坑。。
    很多特性自部署是负优化 比如 static 生成(不是全部 static 导出) ppr 这类 缓存相关( vercel 会把他们部署到边缘节点去 自己 docker 部署就全在内存里了) 都会导致内存大量增加。。。一个总共加起来不到 100 个页面,十来个 route 的 nextjs 服务开着这些功能能吃掉上 G 内存。。。
    rocmax
        15
    rocmax  
       12 小时 17 分钟前 via Android
    @ethusdt 我司从 nextjs13 开始就使用 standalone 模式部署在 eks ,你说的 volume 权限是什么场景?
    如果愿意折腾的话有开源的部署方案 https://opennext.js.org/ 但我觉得这么搞不如给 vercel 交钱。
    ethusdt
        16
    ethusdt  
    OP
       11 小时 43 分钟前
    @rocmax #15 依稀记得之前踩过的坑是这样的:docker build 时候用的 root 权限,但是最终 dockercompose 运行时候镜像内部用户降权无法访问一些资源。并且 volumn 卷权限问题表现不一致,服务器经常用 root 来跑,而本地 mac 环境又不是 root 运行 docker 。可能是 Dockerfile 内部这个 nextjs user 权限导致的,即使配置了 gid/uid 也是有点问题。忘记当时是怎么解决了,可能 AI 给解决了,当时没查下到底是啥问题。
    minmaxflow
        17
    minmaxflow  
       10 小时 32 分钟前
    我最近也碰到一样的问题,我是因为用户在国内,项目部署在阿里云上,使用 ansible(rsync) 配合 standalone 模式, 使用 nginx+pm2, 是比较繁琐。
    frayesshi1
        18
    frayesshi1  
    PRO
       6 小时 15 分钟前
    直接 tmux+npm run
    keithwhisper
        19
    keithwhisper  
       4 小时 52 分钟前
    我推荐用 Coolify 部署
    https://coolify.io/
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     794 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 22:28 PVG 06:28 LAX 14:28 JFK 17:28
    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