前言
之前作者对于Docker是个什么东西完全是个零的概念,但因作者近期所做的项目需要用到Docker来部署应用(说白了就是不得不学),所以折腾了一天,在网上也查找了很多资料,最后终于成功地把自己的nodejs应用部署到Docker上(Windows环境),所以写下这篇文章跟大家分享,希望对您有所帮助!
一、下载 Docker Toolbox
点击下载链接,下载Windows版本的安装文件,下载完成后双击该文件,一路默认Next点下去即可。注意:中途如提示您安装其它的程序,全部选择安装即可。如360软件提示您阻止软件安装,则您需要选择允许软件安装。
安装成功后您的桌面上会出现这几个程序图标,他们分别是 Docker Quickstart Terminal
(Docker的终端),Kitematic(Alpha)
(Docker的GUI管理工具),Oracle VM VirtualBox
(虚拟机)
二、使用 Docker
双击启动 Docker Quickstart Terminal
,稍作等待,你会看到这样的界面:
现在就可以使用docker了,你可以输入一些命令:
docker info // 目前docker环境的相关信息
docker version // docker的版本信息
三、使用 Xshell5 连接 Docker
因为docker终端的体验性很差,平时在使用的时候会有些不方便,所以我们可以用Xshell5连接docker服务器,我们使用 SSH
协议进行连接,主机的ip地址填写 192.168.99.100
,它是docker安装后的默认ip地址,账号:docker
,密码:tcuser
,连接成功后就可以用Xshell5运行docker命令了。
四、用 docker 部署 node.js 应用
首先我们需要下载安装 node.js
环境的镜像,因为下载docker的国外镜像比较慢,所以作者选择了国内的镜像源 DaoCloud
(你也可以选择其他的国内镜像,如阿里,163等),执行下面的命令:
docker pull daocloud.io/library/node
安装nodejs镜像成功
安装镜像成功后,我们就可以构建自己的nodejs项目的镜像了,首先,cd
到项目的根目录,根据您自己的需求构建好 package.json
,执行 vi package.json
{
"name": "nodetest",
"version": "1.0.0",
"description": "nothing",
"main": "main.js",
"scripts": {
"start": "node main.js"
},
"keywords": [
"..."
],
"author": "leechee",
"license": "ISC",
"dependencies": {
"koa": "^1.2.4",
}
}
创建 Dockerfile
,执行 vi Dockerfile
FROM daocloud.io/library/node
# Create app directory
RUN mkdir -p /home/Service
WORKDIR /home/Service
# Bundle app source
COPY . /home/Service
RUN npm install
EXPOSE 8888
CMD [ "npm", "start" ]
-
FROM
表示镜像的地址 -
RUN
表示执行后面的命令 -
WORKDIR
指定工作目录 -
COPY
复制 -
EXPOSE
向外暴露端口 -
CMD
运行命令
最后编写项目入口程序 main.js
,执行 vi main.js
// 一个简单的web server
var koa = require('koa');
var app = koa();
app.use(function *() {
this.body = 'hello world!';
});
app.listen(8888, function () {
console.log('server is running on 8888');
});
准备工作完毕后,执行下面的命令,构建应用程序镜像
docker build -t mynodeapp .
最后一步,在 docker 容器中运行我们的应用
// 先查看我们创建的镜像的 IMAGE ID,它是 6d06d88bda4b
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mynodeapp latest 6d06d88bda4b 1 days ago 791MB
daocloud.io/library/node latest 60bea5b86079 3 weeks ago 673MB
hello-world latest 1815c82652c0 3 months ago 1.84kB
// 根据查到的 IMAGE ID 值,运行下面的命令
$ docker run -d -p 8888:8888 6d06d88bda4b
// 上面的命令没有报错的话,说明应用程序成功运行
$ docker ps // 查看正在运行的容器
$ curl -i localhost:8888 // 测试
最后,还可以使用 Kitematic (Alpha)
来管理 Docker 的应用,比如使用 DockerHub
上的镜像,也可以管理自己的镜像。
简书作者 小菜荔枝 转载请联系作者获得授权
网友评论