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的交互示例代码
Aug 18 NodeJs
轻松创建nodejs服务器(3):代码模块化
Dec 18 NodeJs
NodeJS中的MongoDB快速入门详细教程
Nov 11 NodeJs
使用nodejs下载风景壁纸
Feb 05 NodeJs
nodejs入门教程六:express模块用法示例
Apr 24 NodeJs
nodejs创建简易web服务器与文件读写的实例
Sep 07 NodeJs
nodejs调取微信收货地址的方法
Dec 20 NodeJs
nodejs实现连接mongodb数据库的方法示例
Mar 15 NodeJs
nodejs express配置自签名https服务器的方法
May 22 NodeJs
nodejs中express入门和基础知识点学习
Sep 13 NodeJs
nodejs读取图片返回给浏览器显示
Jul 25 NodeJs
nodejs语言实现验证码生成功能的示例代码
Oct 13 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 $_SERVER详解
2009/01/16 PHP
ThinkPHP表单数据智能写入create方法实例分析
2015/09/27 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
2016/11/17 PHP
Laravel5.4框架中视图共享数据的方法详解
2019/09/05 PHP
Code: write(s,d) 输出连续字符串
2007/08/19 Javascript
ASP中Sub和Function的区别说明
2020/08/30 Javascript
js中的scroll和offset 使用比较的实例与分析
2013/09/29 Javascript
js函数调用的方式
2014/05/06 Javascript
javascript控制在光标位置插入文字适合表情的插入
2014/06/09 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
js验证框架之RealyEasy验证详解
2016/06/08 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
js判断iframe中元素是否存在的实现代码
2016/12/24 Javascript
详解Angular2 关于*ngFor 嵌套循环
2017/05/22 Javascript
vue中v-model动态生成的实例详解
2017/10/27 Javascript
Angular实现表单验证功能
2017/11/13 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
clipboard在vue中的使用的方法示例
2018/10/19 Javascript
用 js 写一个 js 解释器过程详解
2019/08/02 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
[03:17]DOTA2英雄基础教程 剧毒术士
2013/12/12 DOTA
python检查序列seq是否含有aset中项的方法
2015/06/30 Python
详解python时间模块中的datetime模块
2016/01/13 Python
Python编程中归并排序算法的实现步骤详解
2016/05/04 Python
简单谈谈python中的Queue与多进程
2016/08/25 Python
浅谈Python里面小数点精度的控制
2018/07/16 Python
Python中的heapq模块源码详析
2019/01/08 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
美容师的职业规划书
2013/12/27 职场文书
大课间活动制度
2014/01/18 职场文书
总结表彰大会主持词
2014/03/26 职场文书
法定代表人免职证明
2015/06/24 职场文书
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技