1 设置环境 2 创建docker镜像 3 定义服务 4 构建并且运行Node.js应用 5 体验docke-compose的其它特性
####设置构建环境 设置构建环境很简单,准备好需要的文件,放在一个文件夹下就可以,也可以直接在项目的根目录下进行设置,这样就可以和(webstrom,idea)IDE或者编辑器(sublime,atom)整合,应用就可以整合到容器中
创建构建文件夹
➜ ~ mkdir -p ~/docker/nodejs/web
创建Dockerfile
FROM ubuntu:16.04
COPY ./sources.list /etc/apt/sources.list
RUN apt-get update && apt-get install -y \
curl \
apt-utils \
sudo \
apt-transport-https \
ca-certificates \
apt-utils \
&& curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash - \
&& apt-get update \
&& apt-get install -y nodejs
ADD . /code
WORKDIR /code
CMD node app.js
创建app.js
const http = require('http');
const hostname = '0.0.0.0';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Welcome to the node-ubuntu container\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
####创建docker镜像 如果在定义服务那一步直接指定镜像,这一步也可以省略,镜像存在的话就不需要再构建,也可以直接pull远程镜像
➜ ~ docker build -t node-ubuntu:latest .
####定义服务
创建docker-compose.yaml
文件,定义一个web服务,并转发3000端口到容器的3000端口,分配当前目录作为容器/code的数据卷
version: '2'
services:
web:
build: .
ports:
- "3000:3000"
volumes:
- .:/code
####使用docker-compose
构建并且运行Node.js应用
可以使用-d选项放在后台运行
➜ ~ docker-compose up
接下来就可以在浏览器输入127.0.0.1:3000访问Node.js应用
http://127.0.0.1:3000
####体验docke-compose的其它特性 如果你的镜像已经构建完成,你不必每次都要构建镜像后再运行服务,可以很简单的停止和启动容器
➜ ~ docker-compose stop #停止服务
➜ ~ docker-compose pause #暂停服务
➜ ~ docker-compose start #启动服务
➜ ~ docker-compose restart #重启服务
你也可以在服务容器运行命令
➜ ~ docker-compose run web env
为啥不用官方node 镜像作为基础镜像来构建? 体积还小 自豪地采用 CNodeJS ionic
@immatt2015 正在学习,所以自己弄了一个
体积小用 alpine-node
但是 没有需要的版本 自豪地采用 CNodeJS ionic
挺好
@immatt2015 修改代码自行切换版本
@luoyjx 我觉得没有必要太在乎体积的问题,因为你会为容器添加迟早会为容器添加一些工具比如vim之类的
@huangyanxiong01 我只是从部署的角度来看,体积小更易于分发而已~
支持Windows吗?
@luoyjx 是,pull镜像会快些
@yakczh 支持Windows 10 64位最新版,在Windows下使用hyper-v虚拟机建立个Linux环境让docker引擎运行,本质上还是运行在Linux下