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使用mysql模块之获得更新和删除影响的行数的方法
Mar 18 NodeJs
iPhone手机上搭建nodejs服务器步骤方法
Jul 06 NodeJs
Nodejs如何搭建Web服务器
Mar 28 NodeJs
NodeJs读取JSON文件格式化时的注意事项
Sep 25 NodeJs
nodejs和php实现图片访问实时处理
Jan 05 NodeJs
NodeJs测试框架Mocha的安装与使用
Mar 28 NodeJs
详解NODEJS基于FFMPEG视频推流测试
Nov 17 NodeJs
windows系统下更新nodejs版本的方案
Nov 24 NodeJs
nodejs实现OAuth2.0授权服务认证
Dec 27 NodeJs
使用npm安装最新版本nodejs
Jan 18 NodeJs
详解webpack打包nodejs项目(前端代码)
Sep 19 NodeJs
详解Nodejs get获取远程服务器接口数据
Mar 26 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面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
2009/09/30 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
2014/12/17 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
ExtJS实现文件下载的方法实例
2013/11/09 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
JavaScript采用递归算法计算阶乘实例
2015/08/04 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
2015/11/07 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
fullCalendar中文API官方文档
2017/02/07 Javascript
jQuery滚动监听实现商城楼梯式导航效果
2017/03/06 Javascript
JS实现的走迷宫小游戏完整实例
2017/07/19 Javascript
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
node前端开发模板引擎Jade的入门
2018/05/11 Javascript
JS实现监控微信小程序的原理
2018/06/15 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
Vue中控制v-for循环次数的实现方法
2018/09/26 Javascript
React Component存在的几种形式详解
2018/11/06 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
keep-Alive搭配vue-router实现缓存页面效果的示例代码
2020/06/24 Javascript
[01:10:58]KG vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
2019/03/14 Python
Django中create和save方法的不同
2019/08/13 Python
pytorch中使用cuda扩展的实现示例
2020/02/12 Python
python实现批量转换图片为黑白
2020/06/16 Python
浅谈CSS3 动画卡顿解决方案
2019/01/02 HTML / CSS
浅谈html5标签css3的常用样式
2016/10/20 HTML / CSS
贝尔帐篷精品店:Bell Tent Boutique
2019/06/12 全球购物
资金主管岗位职责范本
2014/03/04 职场文书
如何写求职信
2014/05/24 职场文书
2014大学校园光棍节活动策划书
2014/09/29 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
Python Django搭建文件下载服务器的实现
2021/05/10 Python
ajax请求前端跨域问题原因及解决方案
2021/10/16 Javascript