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-alpineRUN echo -e "http://mirrors.aliyun.com/alpine/v3.4/mainn
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/shmkdir /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-alpineADD ./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









