docker with Nodejs
更新日期:
文章目录
利用docker部署nodejs应用
将docker官网的example,自己做了一遍。例子很好,地址这里
原理(个人理解)
上一篇 介绍了docker的一些概念,
因此,在实践之前,需要先讲一下原理,这样就可以理解了。
因为“镜像”是无状态的,对同一个镜像 docker run 两次,将会产生2个“容器”。而“容器”之间是相互隔离的。
也即是说,第一次 docker run centos,得到容器A,然后bash shell进入。mkdir /app/myDir 后退出。
第二次 docker run centos,得到容器B,再bash shell进入后,/app/myDir 是不存在的。
因此 A 和 B 是相互隔离的。
2.如何从“无状态”到“有状态” ?docker利用一个叫Dockerfile 的文件来描述,从一个“纯净”的镜像,执行哪些步骤(类似脚本的方式),最后产生一个“有状态”的镜像。
有点类似 “程序 = 数据结构 + 算法”的概念。数据结构 就是 “纯净”的镜像,算法就是 Dockerfile。
这样,每个人的Dockerfile 都不一样,因此,就泛化出来了,很多“实例镜像”。再 docker run 实例镜像,那么就是有状态的了。
实践
前置推荐:(非必须)首先在VPS上 建立一个工作目录,这样方便归类,本文将在此目录做所有操作。1 | [root@yuanxiaolong nodejs]# pwd |
Step 1.建立 nodejs的package.json,以便Nodejs利用npm下载依赖的模块。
1 | [root@yuanxiaolong nodejs]# cat package.json |
Step 2.编写逻辑文件
1 | [root@yuanxiaolong nodejs]# cat index.js |
Step 3.编写Dockerfile
1 | root@yuanxiaolong nodejs]# cat Dockerfile |
Step 4.利用Dockerfile构建属于自己的镜像
1 | sudo docker build -t yuanxiaolong/centos-node-hello /root/app/workspace/nodejs |
Step 5.检验,看是否产生了自定义的镜像
1 | [root@yuanxiaolong nodejs]# docker images |
Step 6.将宿主主机的一个端口映射到 docker 容器暴露的端口上。这里把本地的49160端口,映射到容器中的8088端口,并运行
1 | docker run -p 49160:8088 -d yuanxiaolong/centos-node-hello |
Step 7.验证
1 |
|