用 nextjs 部署到自己服务器有点麻烦的,必须部署到 vercel 这种 serverless 才方便。
我使用过笨办法,在服务器上克隆整个项目,服务器执行 build ,然后 start ( tmux/screen/systemctl )。
或者麻烦一点用 docker 打包一个镜像,配置 github action 的 ci ,某个打包分支有提交会自动打包镜像,服务器再 pull 镜像就比较方便了。但还是要折腾一下 ci 和 docker 。
或者自己本地打包后 rsync 到服务器,但要踩一下 standalone 之类的坑( node runtime 依赖 node_modules )。
难道就没优雅一点的么?
web 页面和 server api 都在一块确实好用,对前端入门后端来讲也算个不错的选择。
1
GzhiYi 16 小时 58 分钟前 github + docker 不是很好了吗?推送后就自动构建部署无感部署
|
2
rocmax 16 小时 53 分钟前 via Android
|
4
NNNNzs 15 小时 25 分钟前
|
5
kulove 15 小时 13 分钟前 via Android
不太有 我现在 vercel 每月两百刀左右的费用 上个月找了两三种替代方案 比如 railway 都差点意思 有的测试没问题 但生产一切换就不行了
|
6
woodchen 15 小时 9 分钟前
我一般就是 github 打包 docker, nextjs 使用 standalone 模式, 稳定后还是比较方便的. 也可以集成 dokploy 自动构建部署.
https://www.sunai.net/t/topic/352 https://github.com/woodchen-ink/ipinfo/blob/master/Dockerfile 供参考 |
7
doveyoung 14 小时 55 分钟前
最近才试过,standalone + docker ,Dockerfile 里要注意把静态文件也拷贝一份,用的 node:22-alpine 镜像,最终大小在 300M 。
在 vercel 部署的话,好像不遵循 standalone ,我单独做了个 build:vercel 的编译命令 |
8
334132462 13 小时 35 分钟前
如果能解决网络问题 dokku 是一个很不错的方案
|
9
56way 13 小时 29 分钟前
我都是免费蹭 cloudflare 的额度,比 vercel 方便多了。。
|
10
lscho 13 小时 19 分钟前
github + docker 就是最好的方式
|
11
cqx2005 12 小时 52 分钟前
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" |
12
C64NRD 12 小时 41 分钟前
给全栈项目写了个部署的命令行工具( github+docker ) https://nodebbs.com/topic/58
|
13
wuzhanggui 12 小时 34 分钟前
我是前后端一起的,github 上配个 ci ,配的时候是麻烦,但是一劳永逸,提交代码了就部署上去了
参考我的 https://github.com/wurencaideli/dumogu-admin |
14
bbbblue 11 小时 34 分钟前
我几个全是官方 docker 模版部署的
但是自己部署就是坑。。 很多特性自部署是负优化 比如 static 生成(不是全部 static 导出) ppr 这类 缓存相关( vercel 会把他们部署到边缘节点去 自己 docker 部署就全在内存里了) 都会导致内存大量增加。。。一个总共加起来不到 100 个页面,十来个 route 的 nextjs 服务开着这些功能能吃掉上 G 内存。。。 |
15
rocmax 9 小时 56 分钟前 via Android
@ethusdt 我司从 nextjs13 开始就使用 standalone 模式部署在 eks ,你说的 volume 权限是什么场景?
如果愿意折腾的话有开源的部署方案 https://opennext.js.org/ 但我觉得这么搞不如给 vercel 交钱。 |
16
ethusdt OP @rocmax #15 依稀记得之前踩过的坑是这样的:docker build 时候用的 root 权限,但是最终 dockercompose 运行时候镜像内部用户降权无法访问一些资源。并且 volumn 卷权限问题表现不一致,服务器经常用 root 来跑,而本地 mac 环境又不是 root 运行 docker 。可能是 Dockerfile 内部这个 nextjs user 权限导致的,即使配置了 gid/uid 也是有点问题。忘记当时是怎么解决了,可能 AI 给解决了,当时没查下到底是啥问题。
|
17
minmaxflow 8 小时 11 分钟前
我最近也碰到一样的问题,我是因为用户在国内,项目部署在阿里云上,使用 ansible(rsync) 配合 standalone 模式, 使用 nginx+pm2, 是比较繁琐。
|
18
frayesshi1 PRO 直接 tmux+npm run
|
19
keithwhisper 2 小时 30 分钟前
我推荐用 Coolify 部署
https://coolify.io/ |