1.编译Nodejs

要进行Nodejs编译,使用docker就变得非常的方便了。

首先从hub.docker.com下载最新的镜像。https://hub.docker.com/_/node/

一般的项目都使用的是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/  下载一个镜像:

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的镜像大大的提高了开发效率,环境的安装问题一下子得到了解决。

docker中编译nodejs并使用nginx启动的更多相关文章

  1. Swift 后端开发

    作为一门新兴的现代化语言,Swift可以说是苹果在开发语言上的一次集大成之作,吸收了很多语言的优点。而且苹果还期望Swift能在服务端开发上能发挥作用。Perfect框架Perfect框架是Swift开发的Web应用服务器,它支持包括Redis、sqlite、Postgresql、MysqL、MongoDB、FileMaker这样的数据库,并且能以fastcgi或者Web服务器的形式提供服务。具体内容得到Swift源代码中可以找到。

  2. Swift构建总是在Docker中构建整个包

    使用像这样的Dockerfile时:当第3步运行时,swiftbuild将只编译应用程序一次,因为第二次执行将只使用已构建的对象,输出将是单个CompileSwiftModule’foo'然而,在运行第4步时,它似乎忽略了已经构建的任何东西,并重新重建整个事物,尽管没有任何改变且没有干净.我试过运行RUNls/foo/.build&&ls/tmp,一切似乎都到位了.我想要在现实中实现的是设置我的图像所以我首先从git克隆项目,构建它,然后copY在本地机器的任何变化中构建新的更新,但最终建立整个项目2次.

  3. 在Android上使用Docker

    是否可以在Android上构建Docker应用程序?我注意到现在没有,但内核毕竟是基于Linux内核的.如果有办法在没有生根的情况下做到这一点,那就更好了!是否有可能为Android创建Docker应用程序?如果是这样,有没有人知道任何进展?

  4. nodejs npm package.json中文文档

    这篇文章主要介绍了nodejs npm package.json中文文档,本文档中描述的很多行为都受npm-config(7)的影响,需要的朋友可以参考下

  5. 浅析Nodejs npm常用命令

    这篇文章主要介绍了浅析Nodejs npm常用命令的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下

  6. nodejs 使用nodejs-websocket模块实现点对点实时通讯

    这篇文章主要介绍了nodejs 使用nodejs-websocket模块实现点对点实时通讯的实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

  7. nodeJs链接Mysql做增删改查的简单操作

    本篇文章主要介绍了nodeJs链接Mysql做增删改查的简单操作,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  8. Nodejs中使用captchapng模块生成图片验证码

    本篇文章主要介绍了Nodejs中使用captchapng模块实现图片验证码,非常具有实用价值,需要的朋友可以参考下

  9. nodejs 图片预览和上传的示例代码

    本篇文章主要介绍了nodejs 图片预览和上传的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. nodejs中函数的调用实例详解

    本文通过实例代码给大家介绍了nodejs函数的调用,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

随机推荐

  1. Error: Cannot find module ‘node:util‘问题解决

    控制台 安装 Vue-Cli 最后一步出现 Error: Cannot find module 'node:util' 问题解决方案1.问题C:\Windows\System32>cnpm install -g @vue/cli@4.0.3internal/modules/cjs/loader.js:638 throw err; &nbs

  2. yarn的安装和使用(全网最详细)

    一、yarn的简介:Yarn是facebook发布的一款取代npm的包管理工具。二、yarn的特点:速度超快。Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。超级安全。在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。超级可靠。使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。三、y

  3. 前端环境 本机可切换node多版本 问题源头是node使用的高版本

    前言投降投降 重头再来 重装环境 也就分分钟的事 偏要折腾 这下好了1天了 还没折腾出来问题的源头是node 使用的高版本 方案那就用 本机可切换多版本最终问题是因为nodejs的版本太高,导致的node-sass不兼容问题,我的node是v16.14.0的版本,项目中用了"node-sass": "^4.7.2"版本,无法匹配当前的node版本根据文章的提

  4. nodejs模块学习之connect解析

    这篇文章主要介绍了nodejs模块学习之connect解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  5. nodejs npm package.json中文文档

    这篇文章主要介绍了nodejs npm package.json中文文档,本文档中描述的很多行为都受npm-config(7)的影响,需要的朋友可以参考下

  6. 详解koa2学习中使用 async 、await、promise解决异步的问题

    这篇文章主要介绍了详解koa2学习中使用 async 、await、promise解决异步的问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  7. Node.js编写爬虫的基本思路及抓取百度图片的实例分享

    这篇文章主要介绍了Node.js编写爬虫的基本思路及抓取百度图片的实例分享,其中作者提到了需要特别注意GBK转码的转码问题,需要的朋友可以参考下

  8. CentOS 8.2服务器上安装最新版Node.js的方法

    这篇文章主要介绍了CentOS 8.2服务器上安装最新版Node.js的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  9. node.js三个步骤实现一个服务器及Express包使用

    这篇文章主要介绍了node.js三个步骤实现一个服务器及Express包使用,文章通过新建一个文件展开全文内容,具有一定的参考价值,需要的小伙伴可以参考一下

  10. node下使用UglifyJS压缩合并JS文件的方法

    下面小编就为大家分享一篇node下使用UglifyJS压缩合并JS文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

返回
顶部