├── .gitignore ├── Dockerfile ├── Dockerfile_dev ├── README.md └── app ├── index.js └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | 2 | ########### 3 | # 4 | # Production Image Build File 5 | # 6 | # Usage: 7 | # 8 | # docker run --name [image-name] 9 | # 10 | 11 | 12 | FROM centos 13 | MAINTAINER ijse 14 | 15 | RUN yum -y update 16 | RUN yum -y install tar 17 | 18 | # 配置环境变量 19 | ENV NVM_DIR /usr/local/nvm 20 | ENV NODE_VERSION 0.10.32 21 | ENV WORK_DIR /workspace 22 | 23 | # 下载和配置Node.js环境 24 | # 这些命令一定要写在一起, 否则`nvm`命令会找不到 25 | RUN curl https://raw.githubusercontent.com/creationix/nvm/v0.24.0/install.sh | bash \ 26 | && source $NVM_DIR/nvm.sh \ 27 | && nvm install v$NODE_VERSION \ 28 | && nvm use v$NODE_VERSION \ 29 | && nvm alias default v$NODE_VERSION 30 | 31 | ENV NODE_PATH $NVM_DIR/v$NODE_VERSION/lib/node_modules 32 | ENV PATH $NVM_DIR/v$NODE_VERSION/bin:$PATH 33 | 34 | ADD app/ $WORK_DIR/ 35 | RUN cd $WORK_DIR && npm install 36 | 37 | # 设置工作目录 38 | WORKDIR $WORK_DIR 39 | 40 | # 公开镜像的80端口 41 | EXPOSE 80 42 | 43 | CMD npm start 44 | -------------------------------------------------------------------------------- /Dockerfile_dev: -------------------------------------------------------------------------------- 1 | 2 | ########### 3 | # 4 | # Development Image Build File 5 | # 6 | # Usage: 7 | # 8 | # docker run -it -v :/workspace \ 9 | # --name [image-name] 10 | # 11 | 12 | 13 | FROM centos 14 | MAINTAINER ijse 15 | 16 | RUN yum -y update 17 | RUN yum -y install tar git 18 | 19 | # 配置环境变量 20 | ENV NVM_DIR /usr/local/nvm 21 | ENV NODE_VERSION 0.10.32 22 | ENV WORK_DIR /workspace 23 | 24 | # 下载和配置Node.js环境 25 | # 这些命令一定要写在一起, 否则`nvm`命令会找不到 26 | RUN curl https://raw.githubusercontent.com/creationix/nvm/v0.24.0/install.sh | bash \ 27 | && source $NVM_DIR/nvm.sh \ 28 | && nvm install v$NODE_VERSION \ 29 | && nvm use v$NODE_VERSION \ 30 | && nvm alias default v$NODE_VERSION 31 | 32 | ENV NODE_PATH $NVM_DIR/v$NODE_VERSION/lib/node_modules 33 | ENV PATH $NVM_DIR/v$NODE_VERSION/bin:$PATH 34 | 35 | # 设置工作目录 36 | WORKDIR $WORK_DIR 37 | 38 | # 公开镜像的80端口 39 | EXPOSE 80 40 | 41 | CMD bash 42 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | nodejs-docker-image 2 | ================== 3 | 4 | 本代码演示了基于Docker创建一个简单的Node.js**开发环境**。 5 | 6 | ## 代码使用方法 7 | 8 | ```shell 9 | 10 | # 下载代码 11 | git clone https://github.com/ijse/nodejs-docker-image.git 12 | cd nodejs-docker-image 13 | 14 | # 开发环境 15 | ## 构建镜像 16 | docker build --force-rm -t ijse/nvm-dev -f ./Dockerfile_dev . 17 | 18 | ## 运行容器 19 | docker run -it -v /nodejs-docker-image:/workspace --name my-project -p 3000:8080 ijse/nvm 20 | ## 此时会启动进入容器内的bash提示符,在这里可以安装程序依赖(对于容器平台),及启动调试程序 21 | npm install && node index.js 22 | 23 | # 生产环境 24 | ## 构建镜像 25 | docker build --force-rm -t ijse/nvm -f ./Dockerfile . 26 | 27 | ## 运行容器 28 | docker run --name my-project ijse/nvm 29 | ``` 30 | 31 | 于是,容器中的程序便运行起来了 32 | 33 | >**注意:** 34 | > 35 | > * 如果是在Windows或Mac系统下,由于Docker是运行在虚拟机里的,所以访问时`localhost`要换为虚拟机的ip地址。 36 | > * 可以通过`docker inspect `来获取运行的container的ip和端口信息 37 | 38 | 39 | ## 更多内容 40 | 41 | 参照博客文章:http://www.ijser.cn/install-nvm-on-docker/ 42 | 43 | 44 | -------------------------------------------------------------------------------- /app/index.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | 3 | // Constants 4 | var PORT = 80; 5 | 6 | // App 7 | var app = express(); 8 | app.get('/', function (req, res) { 9 | res.send('Hello world\n'); 10 | }); 11 | 12 | app.listen(PORT, '0.0.0.0'); 13 | console.log('Running on http://localhost:' + PORT); 14 | -------------------------------------------------------------------------------- /app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "app", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node index.js", 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "express": "^4.12.3" 14 | } 15 | } 16 | --------------------------------------------------------------------------------