docker该如何配合eggjs work特性让项目稳定的运行?
就在 docker 里面跑 egg-scripts start 即可,不需要 --daemon 了。
{
"scripts": {
"start": "egg-scripts start",
}
}
FROM node:8.6.0-alpine
RUN apk --update add tzdata \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& apk del tzdata
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# add npm package
COPY package.json /usr/src/app/package.json
RUN npm i --registry=https://registry.npm.taobao.org
# copy code
COPY . /usr/src/app
EXPOSE 7001
CMD npm start
8.0.0 egg-socket-io sticky 会有问题,如果没特殊要求换高版本吧
提前COPY package.json && npm install ,docker构建镜像,加快速度
另:用yarn替代npm可以加快镜像构建,大概平均节省30s
你用我们的 https://github.com/cnpm/npminstall 一样会快的发溜。
发自我的 iPhone
在 2017年9月17日,10:04,Quinton.Xu notifications@github.com 写道:
用yarn替代npm可以加快镜像构建,大概平均节省30s
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.
感受一下速度吧

RUN apk --update add tzdata
请问这一步能否用到国内镜像呢,部分网络好慢
这块属于具体 docker 系统的命令了,可以自行 google 下如何修改 alpine 的源
@abos5 可以自己找下国内 apk 镜像
@thonatos 是什么构建UI,是docker hub 和github 协作那个吗?
阿里云容器服务
npm run start 时不加--daemon,node 在前台运行, gitlab ci job 一直就会在运行状态 @atian25
@Yang03
CI 不应该跑 egg-scripts start 。
ci 里面跑的是 docker run -p 7001:7001 --name xx__image xx
dockerFile 最后的命令是 npm run start => egg-script start @thonatos
docker run -d
有人知道 docker run egg项目完成后 无法退出继续执行 linux 命令行是怎么回事?
ctrl+c 都退出不到能输入linux命令的状态
可以在后台运行,这样就不用ctrl+c 了
menkeydyvh notifications@github.com 于2018年9月7日周五 下午6:47写道:
有人知道 docker run egg项目完成后 无法退出继续执行 linux 命令行是怎么回事?
ctrl+c 都退出不到能输入linux命令的状态—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/eggjs/egg/issues/1431#issuecomment-419401636, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AJt-HqfEt3QpaCIbjpM6aTqRnLYHP1EKks5uYk6_gaJpZM4PZn_N
.
有没有是个人服务器,性能不行,构建放到本地,通过git提交到服务器,然后把node_modules以及打包的静态资源dist外挂磁盘的
你直接丢 ci 去构建不就行了。
在我们公司内 私有云上使用 Docker 部署的 Egg 应用,在使用内置的 workers=os.cpus().length 启动后,在 4G x 4Cpus 的容器实例中 进程数 竟然达到了 50 个(alinode 的监控结果,感谢 alinode平台);
在容器中验证 os.cpus().length = 40,所以我们目前是在 npm scripts 中手动限制了 --workers=4。
不知道这是不是我们私有云的 bug,还是 Docker 中确实如此?
在我们公司内 私有云上使用 Docker 部署的 Egg 应用,在使用内置的
workers=os.cpus().length启动后,在 4G x 4Cpus 的容器实例中 进程数 竟然达到了 50 个(alinode 的监控结果,感觉 alinode平台);
在容器中验证os.cpus().length = 40,所以我们目前是在npm scripts中手动限制了--workers=4。不知道这是不是我们私有云的 bug,还是 Docker 中确实如此?
发现这个问题,是因发现内部监控平台 memory 曲线是递增的, 怀疑内存泄漏,排查发现的。中间确实改过部分代码,但最终改过 workers 配置后,曲线正常了。
这是 Node && Docker 的 BUG,os.cpus() 无法识别在 docker 里正确的核数
那目前 egg 跑在 docker 里的话只能通过 --workers 先自己手动指定下 woker 数了?
那目前 egg 跑在 docker 里的话只能通过
--workers先自己手动指定下 woker 数了?
跟平台有关系。我们这里系统环境变量可以获取配置。手动写死也可以。
那目前 egg 跑在 docker 里的话只能通过
--workers先自己手动指定下 woker 数了?跟平台有关系。我们这里系统环境变量可以获取配置。手动写死也可以。
是指在系统环境变量里预先写入了 cpu 相关参数,然后在 --workers 指定的时候读取这个环境变量吗?
那目前 egg 跑在 docker 里的话只能通过
--workers先自己手动指定下 woker 数了?跟平台有关系。我们这里系统环境变量可以获取配置。手动写死也可以。
是指在系统环境变量里预先写入了 cpu 相关参数,然后在
--workers指定的时候读取这个环境变量吗?
是的。系统级公共环境变量是平台运维负责维护的,不是业务开发人员。
那目前 egg 跑在 docker 里的话只能通过
--workers先自己手动指定下 woker 数了?跟平台有关系。我们这里系统环境变量可以获取配置。手动写死也可以。
是指在系统环境变量里预先写入了 cpu 相关参数,然后在
--workers指定的时候读取这个环境变量吗?是的。系统级公共环境变量是平台运维负责维护的,不是业务开发人员。
了解👌,感谢~
ci 里面跑的是
docker run -p 7001:7001 --name xx__image xxdockerFile 最后的命令是
npm run start => egg-script start@thonatos
ci 一般来说是做build 和 deploy的事情的,直接在ci里 运行docker的情况 不太合适吧
Most helpful comment
#package.json
Dockerfile