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 npm包管理的配置方法及常用命令介绍
Jun 05 NodeJs
Nodejs全栈框架StrongLoop推荐
Nov 09 NodeJs
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
Jan 01 NodeJs
nodejs URL模块操作URL相关方法介绍
Mar 03 NodeJs
nodejs实现遍历文件夹并统计文件大小
May 28 NodeJs
nodejs如何获取时间戳与时间差
Aug 03 NodeJs
Nodejs中使用captchapng模块生成图片验证码
May 18 NodeJs
nodejs6下使用koa2框架实例
May 18 NodeJs
Nodejs+express+ejs简单使用实例代码
Sep 18 NodeJs
nodejs中安装ghost出错的原因及解决方法
Oct 23 NodeJs
浅谈NodeJs之数据库异常处理
Oct 25 NodeJs
M2实现Nodejs项目自动部署的方法步骤
May 05 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/02 国漫
php循环检测目录是否存在并创建(循环创建目录)
2011/01/06 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
2014/10/24 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
PHP CURL post数据报错 failed creating formpost data
2016/10/16 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
jQuery 使用手册(二)
2009/09/23 Javascript
JavaScript面向对象之Prototypes和继承
2012/07/12 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
2015/11/03 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
2018/02/11 Javascript
Angular @HostBinding()和@HostListener()用法
2018/03/05 Javascript
原生nodejs使用websocket代码分享
2018/04/07 NodeJs
JavaScript前端页面搜索功能案例【基于jQuery】
2019/07/10 jQuery
[59:53]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第二场 3月6日
2021/03/11 DOTA
python正则表达式match和search用法实例
2015/03/26 Python
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
django框架使用方法详解
2019/07/18 Python
Python高阶函数、常用内置函数用法实例分析
2019/12/26 Python
Python下利用BeautifulSoup解析HTML的实现
2020/01/17 Python
python super用法及原理详解
2020/01/20 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
2020/04/30 Python
Python之变量类型和if判断方式
2020/05/05 Python
学习Python爬虫的几点建议
2020/08/05 Python
英国玛莎百货美国官网:Marks & Spencer美国
2018/11/06 全球购物
欢送退休感言
2014/02/08 职场文书
大学生两会精神学习心得体会
2014/03/10 职场文书
公司晚会主持词
2014/03/22 职场文书
保险公司岗前培训工作总结
2015/10/24 职场文书
java中用float时,数字后面加f,这样是为什么你知道吗
2021/09/04 Java/Android
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电
Win11 BitLocker 驱动器加密
2022/04/19 数码科技
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript