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获取本机内网和外网ip地址的实现代码
Jun 01 NodeJs
Nodejs全栈框架StrongLoop推荐
Nov 09 NodeJs
nodejs 整合kindEditor实现图片上传
Feb 03 NodeJs
你一定会收藏的Nodejs代码片段
Feb 04 NodeJs
Nodejs爬虫进阶教程之异步并发控制
Feb 15 NodeJs
使用nodejs中httpProxy代理时候出现404异常的解决方法
Aug 15 NodeJs
nodejs和php实现图片访问实时处理
Jan 05 NodeJs
nodejs制作爬虫实现批量下载图片
May 19 NodeJs
nodejs爬虫初试superagent和cheerio
Mar 05 NodeJs
Nodejs中获取当前函数被调用的行数及文件名详解
Dec 12 NodeJs
nodejs中方法和模块用法示例
Dec 24 NodeJs
NodeJs 模仿SIP话机注册的方法
Jun 21 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
星际初学者游戏中永远要做的事
2020/03/04 星际争霸
用PHP连mysql和oracle数据库性能比较
2006/10/09 PHP
实用PHP会员权限控制实现原理分析
2011/05/29 PHP
php类中的各种拦截器用法分析
2014/11/03 PHP
详细解读PHP中接口的应用
2015/08/12 PHP
深入浅析php中sprintf与printf函数的用法及区别
2016/01/08 PHP
详谈PHP程序Laravel 5框架的优化技巧
2016/07/18 PHP
php实现登录页面的简单实例
2019/09/29 PHP
Ubuntu 11.10 安装Node.js的方法
2011/11/30 Javascript
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
jQuery获取iframe的document对象的方法
2014/10/10 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
2015/12/13 Javascript
第九篇Bootstrap导航菜单创建步骤详解
2016/06/21 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
2016/12/01 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
node vue项目开发之前后端分离实战记录
2017/12/13 Javascript
Vue-cropper 图片裁剪的基本原理及思路讲解
2018/04/17 Javascript
vue 纯js监听滚动条到底部的实例讲解
2018/09/03 Javascript
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
微信小程序 弹窗输入组件的实现解析
2019/08/12 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
Vue中ref和$refs的介绍以及使用方法示例
2021/01/11 Vue.js
python中将正则过滤的内容输出写入到文件中的实例
2018/10/21 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
2019/08/02 Python
在vscode中配置python环境过程解析
2019/09/28 Python
python实现最速下降法
2020/03/24 Python
python中urllib.request和requests的使用及区别详解
2020/05/05 Python
如何用PyPy让你的Python代码运行得更快
2020/12/02 Python
HTML5如何使用SVG的方法示例
2019/01/11 HTML / CSS
电子商务专业毕业生工作推荐信
2013/11/17 职场文书
房地产营销策划方案
2014/02/08 职场文书
《燕子》教学反思
2014/02/18 职场文书
利用Selenium添加cookie实现自动登录的示例代码(fofa)
2021/05/08 Python
Python深度学习之实现卷积神经网络
2021/06/05 Python