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 相关文章推荐
PHPStorm 2020.1 调试 Nodejs的多种方法详解
Sep 17 NodeJs
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
Mar 18 NodeJs
NodeJs基本语法和类型
Feb 13 NodeJs
在windows上用nodejs搭建静态文件服务器的简单方法
Aug 11 NodeJs
NodeJS中的MongoDB快速入门详细教程
Nov 11 NodeJs
Nodejs 搭建简单的Web服务器详解及实例
Nov 30 NodeJs
nodejs中模块定义实例详解
Mar 18 NodeJs
Mac 安装 nodejs方法(图文详细步骤)
Oct 30 NodeJs
nodeJS微信分享
Dec 20 NodeJs
nodejs实现日志读取、日志查找及日志刷新的方法分析
May 20 NodeJs
nodejs中实现用户注册路由功能
May 20 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获取网卡地址的代码
2008/04/09 PHP
解析PHP无限级分类方法及代码
2013/06/21 PHP
PHP过滤★等特殊符号的正则
2014/01/27 PHP
yii用户注册表单验证实例
2015/12/26 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
javascript中this做事件参数相关问题解答
2013/03/17 Javascript
js动态为代码着色显示行号
2013/05/29 Javascript
jQuery 中国省市两级联动选择附图
2014/05/14 Javascript
javascript中Array数组的迭代方法实例分析
2015/02/04 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
javascript精确统计网站访问量实例代码
2015/12/19 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
jQuery的ready方法实现原理分析
2016/10/26 Javascript
Vue2.0组件间数据传递示例
2017/03/07 Javascript
代码整洁之道(重构)
2018/10/25 Javascript
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
2019/06/17 Javascript
vue解决花括号数据绑定不成功的问题
2019/10/30 Javascript
[33:09]完美世界DOTA2联赛循环赛 Forest vs DM BO2第二场 10.29
2020/10/29 DOTA
Python文件读取的3种方法及路径转义
2015/06/21 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
2020/01/13 Python
JAVA及PYTHON质数计算代码对比解析
2020/06/10 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
python文件排序的方法总结
2020/09/13 Python
大四学年自我鉴定
2013/11/13 职场文书
平面设计师工作职责范文
2013/12/03 职场文书
给同事的道歉信
2014/01/11 职场文书
房地产公司见习自我鉴定
2014/04/28 职场文书
2014新生大学四年计划书
2014/09/21 职场文书
监考失职检讨书
2015/01/26 职场文书
青年教师个人总结
2015/02/11 职场文书
2015年公务员转正工作总结
2015/04/24 职场文书
2016春季运动会开幕词
2016/03/04 职场文书
使用tensorflow 实现反向传播求导
2021/05/26 Python
将MySQL的表数据全量导入clichhouse库中
2022/03/21 MySQL