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的require模块(文件模块/核心模块)及路径介绍
Jan 14 NodeJs
将nodejs打包工具整合到鼠标右键的方法
May 11 NodeJs
Nodejs为什么选择javascript为载体语言
Jan 13 NodeJs
nodejs导出excel的方法
Jun 30 NodeJs
nodejs实现发出蜂鸣声音(系统报警声)的方法
Jan 18 NodeJs
基于Nodejs利用socket.io实现多人聊天室
Feb 22 NodeJs
nodejs超出最大的调用栈错误问题
Dec 27 NodeJs
nodeJs实现基于连接池连接mysql的方法示例
Feb 10 NodeJs
详解nodejs 配置文件处理方案
Jan 02 NodeJs
NodeJs入门教程之定时器和队列
Mar 08 NodeJs
Nodejs 识别图片类型的方法
Aug 15 NodeJs
Nodejs 数组的队列以及forEach的应用详解
Feb 25 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/04/03 PHP
smarty自定义函数htmlcheckboxes用法实例
2015/01/22 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
jQuery 回车事件enter使用示例
2014/02/18 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
javascript实现选中复选框后相关输入框变灰不可用的方法
2015/08/11 Javascript
浅析nodejs实现Websocket的数据接收与发送
2015/11/19 NodeJs
JavaScript兼容浏览器FF/IE技巧
2016/08/14 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
原生js仿浏览器滚动条效果
2017/03/02 Javascript
详解webpack异步加载业务模块
2017/06/23 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
微信小程序实现底部导航
2018/11/05 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
2019/04/24 Javascript
Javascript通过控制类名更改样式
2019/05/24 Javascript
解决layui checkbox 提交多个值的问题
2019/09/02 Javascript
vue中的mescroll搜索运用及各种填坑处理
2019/10/30 Javascript
python实现对指定输入的字符串逆序输出的6种方法
2018/04/26 Python
python基于opencv检测程序运行效率
2019/12/28 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
2020/03/10 Python
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
《可爱的动物》教学反思
2014/02/22 职场文书
活动总结结尾怎么写
2014/08/30 职场文书
婚礼答谢礼品
2015/01/20 职场文书
2015年保安个人工作总结
2015/04/02 职场文书
小学思想品德教学反思
2016/02/24 职场文书
财务年终工作总结大全
2019/06/20 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
如何使用Python提取Chrome浏览器保存的密码
2021/06/09 Python
尝试使用Python爬取城市租房信息
2022/04/12 Python
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python