docker制作node程序镜像:
准备:
需要5个文件
新建一个docker文件夹
1 .ignore git忽略文件用的
2 pakage.json 安装NODE程序的 也可以直接拷贝进 docker文件加
3 node环境 linux版本
4 node程序
5 dockerfile配置文件
package可以有也可以没有
此处分为两种:
一种是node程序在git上
一种是直接拷贝到docker程序中
为了简便我用的是第二种
dockerfile配置如下:
FROM centos:latest ENV NPM_CONFIG_LOGLEVEL info # NODE版本
ENV NODE_VERSION 4.5.
# XCLOUD版本
ENV XCLOUD_VERSION 1.0. # linux node at https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.x
# e.g, curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz"
#此处将node环境拷贝进docker 在linux中需要编译安装,在docker中只需将其考进去便可以,考到root/app中 这个文件对外看不到
COPY ./node-v4.5.0-linux-x64.tar.xz /
COPY ./node_modules/am-privatecloud /root/app RUN tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components= \
&& rm "node-v$NODE_VERSION-linux-x64.tar.xz" \
#此处不明白为什么多了一个连接????
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs # 进入工作目录
WORKDIR /root/app # 安装项目依赖
RUN npm install # 启动项目
ENTRYPOINT ["node"]
CMD ["-v"] # 开放30000端口
EXPOSE
在虚拟机上按照型号安装好docker ;
1、将上面的docker文件拷贝到虚拟机上,进入目录运行
docker build -t yunshipei/private-xcloud:1.0.0 .
参数含义
-t yunshipei/private-xcloud:1.0.0 镜像名字为yunshipei/private-xcloud,tag为1.0.0
. 代表当前目录,即Dockerfile所在目录
生成docker镜像 即images
2、 测试镜像docker run --rm yunshipei/private-xcloud:1.0.0,如果输出v4.5.0说明容器没有问题。
参数含义
--rm 容器停止后删除容器
yunshipei/private-xcloud:1.0.0 镜像名:tag
这里没有指定启动命令,这时自动命令是Dockerfile中配置的ENTRYPOINT + CMD即node -v。如果指定了命令,指定的命令就会替换掉CMD的默认命令。
3、 启动容器
docker run -d --name xcloud -e "NODE_ENV=production" -v /root/xcloud:/root/app/static --restart=always -p : yunshipei/private-xcloud:1.0. /root/app/bin/www
此处注意 末尾 /root/app/bin/www 启动文件
参数含义: -d 以后台进程方式启动
--name xcloud容器名字为xcloud
-e "NODE_ENV=production" 设置环境变量NODE_ENV=production
-v /root/xcloud:/root/app/static 本地/root/xcloud(任意指定)目录映射到容器内的/root/app/static(不能变)目录(用户存放拉取下来的allmobilize.min.js)
--restart=always 如果进程异常退出总是自动重启
-p 30000:30000 将主机的30000端口映射到容器内的30000端口
yunshipei/private-xcloud:1.0.0 镜像名:tag
/root/app/server.js 启动命令(实际全部的启动命令为 node /root/app/server.js,因为在Dockerfile中已经设置了ENTRYPOINT为node)
4、 查看容器状态docker ps -a,找到Name是xcloud查看器状态。如果STATUS是UP说明容器正常启动了。
参数含义
ps -a 查看所有容器 查看名字是xloud的容器如果配置完成,外网不能访问。那么检查一下本地系统的转发支持
sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1如果是0表示没有开启,则需要手动打开
sysctl -w net.ipv4.ip_forward=1以上设置在重启后就不生效了,想要永久生效需要在
/etc/sysctl.conf找到net.ipv4.ip_forward部分设置为1(如果没有,在最后追加一项)net.ipv4.ip_forward = 1然后运行
sysctl -p
镜像的导入导出
在机器上第一次编译镜像时间比较慢(首次编译如果本地没有镜像缓存,还要去中央仓库拉取依赖的镜像),另外新机器也可能没有权限去拉取Git上面的项目。在这种情况下在本地把镜像编译后,导出来,分发给客户镜像压缩包。客户那边直接装载这个导出的镜像即可。
镜像导出
docker save yunshipei/private-xcloud:1.0.0 | gzip -c > xcloud-100.tar.gz
参数含义:
导出命令为docker save
yunshipei/private-xcloud:1.0.0 镜像名:tag
| gzip -c > xcloud-100.tar.gz 输出重定向到gzip执行压缩,然后输出到 xcloud-100.tar.gz文件中
镜像导入
gunzip -c xcloud-100.tar.gz | docker load
参数含义:
docker load 为导入镜像命令
gunzip -c xcloud-100.tar.gz解压镜像压缩包输出到标准输出
| docker load 重定向标准输出到docker load
docker制作node程序镜像:的更多相关文章
- docker制作自己的镜像并上传dockerhub
1.首先注册自己的dockerhub账号,注册地址:https://hub.docker.com 2.在linux服务器登录自己的账号:docker login --username=qiaoyeye ...
- centos7使用docker制作tomcat本地镜像
1.安装Docker 安装docker前请确认当前linux的内核版必须是3.10及以上 命令: uname -r 1).yum install -y yum-utils device-mapper ...
- 使用 Docker 部署 Node 应用 - 镜像文件尺寸的优化
前面 使用 Docker 部署 Node 应用 一文中完成了镜像的创建和运行,不过生成的镜像还有些粗糙,需要进一步优化. 镜像的优化 通过 docker images 看到简单的一个 node 服务端 ...
- docker制作jdk+tomcat镜像
docker部署TOMCAT项目 一.内核升级 [root@test01 ~]# uname -r #内核查看确认 2.6.32-696.16.1.el6.x86_64 [root@test01 ...
- Docker 制作自己的镜像
1. 下载tomcat镜像 docker pull hub.c.163.com/library/tomcat:latest 2. 创建Dockfile vi Dockerfile from hub.c ...
- docker学习7-Dockerfile制作自己的镜像文件
前言 如果你是一个python自动化测试人员,某天你在公司终于完成了一个项目的接口自动化脚本工作,在你自己常用的本机或者服务器上调试完成了脚本,稳稳地没问题. 可是晚上下班回家,你自己找了个linux ...
- 【ASP.NET Core分布式项目实战】(五)Docker制作dotnet core控制台程序镜像
Docker制作dotnet core控制台程序镜像 基于dotnet SDK 新建控制台程序 mkdir /home/console cd /home/console dotnet new cons ...
- Docker Java程序镜像制作
Docker Java程序镜像制作 制作前的准备 jre:不需要完整的jdk,jre即可,到Oracle进行下载即可,下载链接,根据自己的情况进行选择,这里选择jre-8u221-linux-x64. ...
- 制作nodejs项目镜像,实现docker下的快速部署
前言 前面的文章<centos7+ docker1.12 实践部署docker及配置direct_lvm>中,已经实践了如何在centos7下安装,配置docker, 所以接下来就打算去制 ...
随机推荐
- Ajax日记
简要讲Ajax 的内容归纳为博客. AJAX能且仅能从服务器上读取文件,我们使用ajax的时候分为以下几个步骤: 1. 创建ajax对象 2. 链接服务器 3. 发送请求 4. 接收返回值 下 ...
- Intent、Bundle——实现Activity之间的通信
http://blog.sina.com.cn/s/blog_62dea93001015847.html 一个应用程序会有多个Activity,但是只有一个Activity作为程序的入口,应用中的其他 ...
- (八)boost库之异常处理
(八)boost库之异常处理 当你面对上千万行的项目时,当看到系统输出了异常信息时,你是否想过,如果它能将文件名.行号等信息输出,该多好啊,曾经为此绞尽脑汁. 今天使用boost库,将轻松的解决这个问 ...
- 充分利用HTML标签元素 – 简单的xtyle前端框架
xtyle框架充分利用语义化标签来做美化样式,兼容多款主流浏览器,包括IE8. xtyle框架虽然没BS这么强大,但我觉得也很实用,体积不算很大,适用于企业网站.WordPress主题.个人网站.博客 ...
- How debuggers work
做了一个PPT用来和组内的同学交流一下.内容很简单,写得也很简单. 谁知道博客园文章里怎么直接嵌入PPT呢? link: http://www.slideshare.net/ssuserdc412f/ ...
- 自动工作负载库(Automatic Workload Repository,AWR)
自动工作负载库(Automatic Workload Repository,AWR)AWR的由来: 10g之前的oracle:用户的连接将产生会话,当前会话记录保存在v$session中:处于等 ...
- 视频编解码学习之路(H264)
学习视频编解码技术很难吗?视频编解码技术的未来是什么? 明了的说,无论是软件还是硬件设计,视频编解码技术有很多难点,都需要很长一段时间积累才行. 从一开始接触MPEG-2到最新的H.264标准,可算走 ...
- (转)ASP.NET缓存概念及其应用浅析
ASP.NET缓存概念及其应用浅析 ASP.NET缓存是什么呢?ASP.NET缓存有什么样子的特点呢?本文就向你详细介绍ASP.NET缓存的相关情况. ASP.NET缓存概念是什么呢?通常,应用程序可 ...
- 全站 HTTPS
1.HTTPS 基础 HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信 ...
- [Effective C++系列]-透彻了解inlining的里里外外
Understand the ins and outs of inlining. [原理] Inline函数背后的做法是将“对函数的每一个调用”都用函数本体(function body)替换之.其 ...