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 npm install全局安装和本地安装的区别
Jun 05 NodeJs
nodejs 实现模拟form表单上传文件
Jul 14 NodeJs
NodeJS学习笔记之Connect中间件应用实例
Jan 27 NodeJs
Nodejs全局安装和本地安装的不同之处
Jul 04 NodeJs
NodeJS使用formidable实现文件上传
Oct 27 NodeJs
详解nodejs通过代理(proxy)发送http请求(request)
Sep 22 NodeJs
nodejs实现解析xml字符串为对象的方法示例
Mar 14 NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 NodeJs
详解NodeJS Https HSM双向认证实现
Mar 12 NodeJs
图解NodeJS实现登录注册功能
Sep 16 NodeJs
Nodejs + sequelize 实现增删改查操作
Nov 07 NodeJs
浅谈JS和Nodejs中的事件驱动
May 05 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
php类中的各种拦截器用法分析
2014/11/03 PHP
PHP中Memcache操作类及用法实例
2014/12/12 PHP
php实现的xml操作类
2016/01/15 PHP
php错误日志简单配置方法
2016/07/11 PHP
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
2013/01/04 Javascript
jQuery产品间断向下滚动效果核心代码
2014/05/08 Javascript
jQuery 仿百度输入标签插件附效果图
2014/07/04 Javascript
javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
2014/12/20 Javascript
js实现仿qq消息的弹出窗效果
2016/01/06 Javascript
Bootstrap按钮下拉菜单组件详解
2016/05/10 Javascript
JS使用cookie设置样式的方法
2016/06/30 Javascript
详解nodejs爬虫程序解决gbk等中文编码问题
2017/04/06 NodeJs
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
2020/09/27 Javascript
打印出python 当前全局变量和入口参数的所有属性
2009/07/01 Python
简单介绍Python中的try和finally和with方法
2015/05/05 Python
Python实现将xml导入至excel
2015/11/20 Python
PYQT5设置textEdit自动滚屏的方法
2019/06/14 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
2020/02/26 Python
详解CSS3中字体平滑处理和抗锯齿渲染
2017/03/29 HTML / CSS
CSS3 实现雷达扫描图的示例代码
2020/09/21 HTML / CSS
世界上最全面的汽车零部件和配件集合:JC Whitney
2016/09/04 全球购物
阿玛尼化妆品美国官网:Giorgio Armani Beauty
2017/02/02 全球购物
草莓网中国:StrawberryNet中国
2020/08/17 全球购物
关于青春的演讲稿500字
2014/08/22 职场文书
党员干部形式主义个人整改措施
2014/09/17 职场文书
如何签定毕业生就业协议书
2014/09/28 职场文书
2015会计试用期工作总结
2014/12/12 职场文书
优秀员工事迹材料
2014/12/20 职场文书
计算机专业自荐信
2015/03/05 职场文书
python随机打印成绩排名表
2021/06/23 Python
纯html+css实现奥运五环的示例代码
2021/08/02 HTML / CSS
Python字符串的转义字符
2022/04/07 Python