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, 所以接下来就打算去制 ...
随机推荐
- Git学习02 --暂存区,撤销修改,删除文件
工作区和暂存区概念: 工作区(Working Directory)就是你在电脑里能看到的目录. 版本库(Repository) 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库. Gi ...
- USB Mass Storage大容量存储的基本知识
http://www.crifan.com/files/doc/docbook/usb_disk_driver/release/htmls/ch02_msc_basic.html 目录 2.1. US ...
- QT:窗口最小化时显示一个小浮标
有些窗口在自身最小化时要在桌面上显示一个小浮标,让用户利用这个小浮标进行各种操作(例如迅雷的悬浮窗一样),我试着用QT实现一下这个功能. PS:本来以为这个功能很简单,却搞了我两个晚上,泪奔... 思 ...
- (一)boost库之日期、时间
(一)boost库之日期.时间 一.计时器 计时器,通常在一个项目中统计一个函数的执行时间是非常实用的. #include <boost/timer.hpp> void PrintU ...
- Table XXX is marked as crashed and should be repaired问题
数据表出错了,查询数据获取不到了. 尝试一 重启mysql service mysqld restart 没用,重启并没有把表修复掉 尝试二 check table vicidial_list;rep ...
- Signal ()函数详细介绍 Linux函数
http://blog.csdn.net/ta893115871/article/details/7475095 Signal ()函数详细介绍 Linux函数 signal()函数理解 在<s ...
- 新闻公布系统 (Asp.net 三层架构 )
2012年度课程设计---新闻公布系统(小结) ...
- 8位(bit)=1字节(Byte)
8位(bit)=1字节(Byte),1024字节=1KB: 提到了字节,不得不再提到“字”这个计量单位:“字”由若干个字节构成,字的位数叫做字长,字长就是说字所对应的二进制数的长度.不同的机器有不同的 ...
- 创建和使用RMAN存储脚本
创建和使用RMAN存储脚本:1.连接恢复目录(可以不连接到目标库):C:\Users\Administrator>rman target sys/rusky@rusky catalog=rcat ...
- LinQ学习手册
LinQ : Language Integrated Query(语言集成查询); 1.以统一方式操作各种数据源,减少数据访问的复杂性. 优点在于封装了SQL语句,只对对象进行操作(增删改查),代码量 ...