docker下的nodejs

编辑于2016年,观看别人的博客后的笔记,原作者要是看到请联系我注明出处

简单的docker 下nodejs web应用

此应用用于开发环境

第一步 :创建问一个新的文件夹,并在其中创建package.json 和server.js

package.json
{"name": "docker_web_app","version": "1.0.0","description": "Node.js on Docker","author": "First Last <first.last@example.com>","main": "server.js","scripts": {"start": "node server.js"},"dependencies": {"express": "^4.13.3"}}
server.js
'use strict';const express = require('express');// Constantsconst PORT = 8080;// Appconst app = express();
app.get('/', function (req, res) {
  res.send('Hello world\n');});

app.listen(PORT);
console.log('Running on http://localhost:' + PORT);

第二步:创建一个dockerfile

touch Dockerfile

获取nodejs 版本为agon

FROM node:argon

创建应用的镜像空间文件夹

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

移动package.json /usr/src/app/ 并执行npm install

# Install app dependenciesCOPY package.json /usr/src/app/
RUN npm install

绑定你的源代码到docker镜像

# Bundle app sourceCOPY . /usr/src/app

绑定端口8080 使其成为docker的映射

EXPOSE 8080

最后设置命令 npm start

CMD ["npm","start"]

文件内容如下

FROM node:argon

# Create app directoryRUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Install app dependenciesCOPY package.json /usr/src/app/
RUN npm install

# Bundle app sourceCOPY . /usr/src/app

EXPOSE 8080
CMD [ "npm", "start" ]

构建镜像

-t 标记你的镜像为什么名称,最后一个.是当前目录

$ docker build -t <your username>/node-web-app .

使用docker images查看

$ docker images

# Example
REPOSITORY                      TAG        ID              CREATED
node                            argon      539c0211cd76    3 weeks ago
<your username>/node-web-app    latest     d64d3505b0d2    1 minute ago

执行镜像

使用-d运行可以使你的应用后台运行 -p把私有的端口映射为公共端口

$ docker run -p 49160:8080 -d <your username>/node-web-app

使用以下命令查看

# Get container ID
$ docker ps# Print app output
$ docker logs <container id># Example
Running on http://localhost:8080

如果你想进入应用目录环境

# Enter the container
$ docker exec -it <container id> /bin/bash

测试

获取docker的端口

$ docker ps# Example
ID            IMAGE                                COMMAND    ...   PORTS
ecce33b30ebf  <your username>/node-web-app:latest  npm start  ...   49160->8080

使用curl(如果没有安装:sudo apt-get install curl)

$ curl -i localhost:49160

HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 12
Date: Sun, 02 Jun 2013 03:53:22 GMT
Connection: keep-alive

Hello world
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,544评论 0 120
  • 作者简介:黄庆兵,网易蜂巢首席技术布道师,浙大硕士毕业,从事云计算、Docker、Go等相关开发及技术布道工作;喜...
    43ce3d72fadb阅读 9,397评论 0 11
  • 0. 前言 docker是什么?docker是用GO语言开发的应用容器引擎,基于容器化,沙箱机制的应用部署技术。可...
    sessionboy阅读 3,884评论 2 49
  • 白色的大理石地板 横亘在那天傍晚的我们的吻里 我在地板的花纹里,凋谢成泥 你在地板的光线里,安歇,一朵云成雨 谁把...
    霂隐阅读 130评论 0 0