docker中编译nodejs并使用nginx启动


Posted in NodeJs onJune 23, 2017

1.编译Nodejs

要进行Nodejs编译,使用docker就变得非常的方便了。

首先从hub.docker.com下载最新的镜像。https://hub.docker.com/_/node/

docker中编译nodejs并使用nginx启动

一般的项目都使用的是node6的镜像。

docker pull node:6-alpine

然后就可以直接使用npm install了。

Alpine是一个非常小的操作系统,在编译,运行docker非常喜欢使用这个系统,因为小,占用磁盘小,下载速度快,部署也快。

节省磁盘空间,节省部署时间。

2.使用docker镜像提前下载库

但是遇到一个问题,就是下载编译的时间太长了。

一般使用nodejs进行开发的时候都有一个package.json 里面具体的项目依赖 包,下载这个依赖需要很长时间。一般使用阿里云的镜像安装。

npm install --registry=https://registry.npm.taobao.org

而在使用docker 进行构建,编译的时候每次都是要下载这些依赖。大大增加了编译的时间。

FROM docker.io/library/node:6-alpine

RUN echo -e "http://mirrors.aliyun.com/alpine/v3.4/main\n\

http://mirrors.aliyun.com/alpine/v3.4/community" > /etc/apk/repositories

COPY package.json /root/

RUN cd /root && npm install --registry=https://registry.npm.taobao.org

可以提前将镜像下载好,然后在编译。做一个基础的镜像。如下:

构建这个基础镜像:

docker build -t my-demo/node6-alpine:latest .

在利用这个镜像进行编译:

#!/bin/sh

mkdir /app && cd /app

git clone xxx.git /app

ln -s /root/.gnupg /app/.gnupg

ln -s /root/.npm /app/.npm

ln -s /root/node_modules /app/node_modules

npm install --registry=https://registry.npm.taobao.org

npm run build

build.sh

然后利用这个基础镜像进行编译,生气了之前的instal 过程。

期中的node_modules是node的模块文件夹。编译后的文件在dist文件夹内。

3.使用nginx启动

首先从https://hub.docker.com/_/nginx/  下载一个镜像:

docker中编译nodejs并使用nginx启动

FROM docker.io/library/nginx:1-alpine

ADD ./dist/* /usr/share/nginx/html/

EXPOSE 80

ENTRYPOINT ["nginx","-g","daemon off;"]

使用nginx镜像启动,直接将node编译后的文件放到html目录

编译docker :

docker build -t my-demo/nginx:latest .

启动docker:

docker run -itd -p 8080:80 my-demo/nginx:latest

然后直接访问 8080 端口就可以了。

总结:

(首发,请勿转载。)

现在前后端的拆分,可以提高开发效率。但是部署起来稍微麻烦,需要前后的分别进行编译,前端编译也需要很长时间。可以提前将依赖库大成一个node基础镜像,然后再进行编译,这样可以大大的提高编译时间。同时运行环境使用一个nginx,将html,css,js等资源文件都放上,也才20多MB。而且在nginx中也可以将后台api在进行配置,将前后端集成进来。同时docker的镜像大大的提高了开发效率,环境的安装问题一下子得到了解决。

NodeJs 相关文章推荐
Nodejs极简入门教程(二):定时器
Oct 25 NodeJs
NodeJS学习笔记之MongoDB模块
Jan 13 NodeJs
nodejs实现获取某宝商品分类
May 28 NodeJs
详解nodejs 文本操作模块-fs模块(二)
Dec 22 NodeJs
详解nodejs 文本操作模块-fs模块(一)
Dec 22 NodeJs
nodeJS删除文件方法示例
Dec 25 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
Nodejs进阶之服务端字符编解码和乱码处理
Sep 04 NodeJs
详解nodejs通过代理(proxy)发送http请求(request)
Sep 22 NodeJs
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
Jul 31 NodeJs
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
Apr 29 NodeJs
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
Dec 14 NodeJs
NodeJs中express框架的send()方法简介
Jun 20 #NodeJs
深入浅析Nodejs的Http模块
Jun 20 #NodeJs
Nodejs实现多房间简易聊天室功能
Jun 20 #NodeJs
NodeJS 实现手机短信验证模块阿里大于功能
Jun 19 #NodeJs
手把手教你把nodejs部署到linux上跑出hello world
Jun 19 #NodeJs
CentOS 安装NodeJS V8.0.0的方法
Jun 15 #NodeJs
详解Nodejs之npm&package.json
Jun 15 #NodeJs
You might like
安装APACHE
2007/01/15 PHP
PHP登陆后跳转到登陆前页面实现思路及代码
2014/01/17 PHP
php中socket通信机制实例详解
2015/01/03 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
解读PHP中上传文件的处理问题
2016/05/29 PHP
javascript语句中的CDATA标签的意义
2007/05/09 Javascript
jQuery动画animate方法使用介绍
2013/05/06 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
javascript制作的网页侧边弹出框思路及实现代码
2014/05/21 Javascript
javascript几个易错点记录
2014/11/26 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
学习JavaScript设计模式之装饰者模式
2016/01/19 Javascript
jquery获取form表单input元素值的简单实例
2016/05/30 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
vue实现在v-html的html字符串中绑定事件
2019/10/28 Javascript
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
解决Python字典写入文件出行首行有空格的问题
2017/09/27 Python
python通过zabbix api获取主机
2018/09/17 Python
python基础知识(一)变量与简单数据类型详解
2019/04/17 Python
python实现门限回归方式
2020/02/29 Python
Python批量处理csv并保存过程解析
2020/05/16 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
淘宝好评语大全
2014/05/05 职场文书
奥巴马上海演讲稿
2014/09/10 职场文书
乡镇干部个人对照检查材料思想汇报
2014/10/04 职场文书
婚礼答谢礼品
2015/01/20 职场文书
2015年仓库工作总结
2015/04/09 职场文书
看上去很美观后感
2015/06/10 职场文书
初三语文教学反思
2016/03/03 职场文书
JavaScript实现优先级队列
2021/12/06 Javascript