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内存泄漏问题详解
Sep 05 NodeJs
详解nodejs 文本操作模块-fs模块(四)
Dec 22 NodeJs
nodejs实现发出蜂鸣声音(系统报警声)的方法
Jan 18 NodeJs
详谈Angular路由与Nodejs路由的区别
Mar 05 NodeJs
NodeJs安装npm包一直失败的解决方法
Apr 28 NodeJs
ubuntu编译nodejs所需的软件并安装
Sep 12 NodeJs
CentOS7中源码编译安装NodeJS的完整步骤
Oct 13 NodeJs
NodeJs 文件系统操作模块fs使用方法详解
Nov 26 NodeJs
NVM安装nodejs的方法实用步骤
Jan 16 NodeJs
NodeJs入门教程之定时器和队列
Mar 08 NodeJs
nodejs二进制与Buffer的介绍与使用
Jul 11 NodeJs
nodejs实现百度舆情接口应用示例
Feb 07 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
全国FM电台频率大全 - 9 上海市
2020/03/11 无线电
php上的memcache和memcached两个pecl库
2010/03/29 PHP
php json_encode()函数返回json数据实例代码
2014/10/10 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
2015/03/05 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
2016/01/11 PHP
php 访问oracle 存储过程实例详解
2017/01/08 PHP
学习ExtJS Column布局
2009/10/08 Javascript
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
2012/03/01 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
使用jQuery mobile库检测url绝对地址和相对地址的方法
2015/12/04 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
2016/03/13 Javascript
jQuery+Ajax实现限制查询间隔的方法
2016/06/07 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
详解JavaScript之ES5的继承
2020/07/08 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
2021/01/26 Vue.js
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
python实现的简单猜数字游戏
2015/04/04 Python
Python和JavaScript间代码转换的4个工具
2016/02/22 Python
PyQt5主窗口动态加载Widget实例代码
2018/02/07 Python
Python通过Pillow实现图片对比
2020/04/29 Python
CSS3 倾斜的网页图片库实例教程
2009/11/14 HTML / CSS
HTML5单页面手势滑屏切换原理分析
2017/07/10 HTML / CSS
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
美国床垫和床上用品公司:Nest Bedding
2017/06/12 全球购物
非功能性需求都包括哪些方面
2013/10/29 面试题
应届毕业生个人求职自荐信
2014/01/06 职场文书
医院护士见习期自我鉴定
2014/04/10 职场文书
文明城市创建标语
2014/06/16 职场文书
结婚喜宴祝酒词
2015/08/10 职场文书
入党转正申请自我鉴定
2019/06/25 职场文书
Python如何使用logging为Flask增加logid
2021/03/30 Python