基于Docker部署nodejs应用
基于Docker部署nodejs应用
背景
公司基于Vue.js的项目最近需要部署到云端,因此需要先行在公司内部Docker环境下验证相关技术,因而有本文之前提。
本文展示在Docker容器中,应用部署Nodejs程序。
获取基础镜像
Docker Hub中有官方node镜像,按照自己的需求直接获取对应版本的image即可。我获取的是8.0-alpine版本,因为基于alpine的node镜像足够小,仅有63.7 MB。
获取源码
从源码库上,获取到整个源代码工程。(过程略)
编写Dockerfile
首先,我们确立文档模型。目录结构如下:
~/nodejs
Order/ [nodejs源码目录]
Dockerfile
Dockerfile内容如下
# 引用镜像
FROM node:8.0-alpine
# 作者
MAINTAINER yubing
# 执行命令,创建文件夹
RUN mkdir -p /home/Order
# 将Order目录拷贝到镜像里
ADD ./Order /home/Order
# 指定工作目录
WORKDIR /home/Order
# 安装依赖及构建node应用
RUN npm install
RUN npm build
# 配置系统变量,指定端口
ENV HOST 0.0.0.0
ENV PORT 8081
# 将端口8081开放
EXPOSE 8081
# 容器启动命令
CMD ["npm", "start"]
构建镜像
在Dockerfile所在目录执行docker build命令,构建镜像。
docker build --rm -t orderui:20180531 .
其中,--rm 是删除构建过程中,产生的临时镜像,-t 是指定镜像名称及标识,如:orderui:20180531,最后. 代表默认选择Dockerfile为构建文件。
创建容器
docker run -p 8081:8081 --name orderui -d orderui:20180531
-p 是指定端口映射,--name 给容器命名,-d 后台执行
稍等片刻,等npm start执行完毕后,即可访问。
基于Docker部署nodejs应用的更多相关文章
- 基于Docker部署ETCD集群
基于Docker部署ETCD集群 关于ETCD要不要使用TLS? 首先TLS的目的是为了鉴权为了防止别人任意的连接上你的etcd集群.其实意思就是说如果你要放到公网上的ETCD集群,并开放端口,我建议 ...
- dcoker实战,使用docker部署NodeJs应用
docker简介 docker是一个开源的应用容器引擎,可以为我们提供安全.可移植.可重复的自动化部署的方式.docker采用虚拟化的技术来虚拟化出应用程序的运行环境.如上图一样.docker就像 ...
- Ubuntu系统下基于docker部署Jenkins环境
本文是在ubuntu环境下安装jenkins,jenkins运行在docker容器中, 至于docker如何安装,请参考https://www.cnblogs.com/xingyunqiu/p/115 ...
- 基于docker部署jenkins
1. 拉镜像 和其他的部署的镜像的方式一样,通常是直接使用docker search jenkins 然后直接docker pull jenkins 此时,在安装插件的时候发现插件都安装失败,提示je ...
- docker部署nodejs项目应用
之前笔者弄了一套nestjs项目放在自己服务器上,并用pm2管理进程. 现在要把pm2停止,尝试一下用docker容器,那么首先要安装docker 一.安装docker 由于笔者服务器的系统是cent ...
- CentOS中实现基于Docker部署BI数据分析
作为一个专业小白,咱啥都不懂. linux不懂,docker不懂. 但是我还想要完成领导下达的任务:在linux中安装docker后部署数据可视化工具.作为一名敬业 的打工人摆烂不可以,躺平不可以,弱 ...
- 基于docker 部署 canvas-lms
准备: 一台8G内存的服务器.安装好docker, pull一个ubuntu镜像下来, 可以是最新版也可以是官方支持的14/ 16 Step 1: 启动docker容易加载ubuntu镜像.命令如下 ...
- Linux Centos7 环境基于Docker部署Zookeeper服务搭建实战
配置Zookeeper安装目录 在宿主机配置zookeeper安装目录:/docker/develop/zookeeper 并且在文件夹创建 data 和logs 目录: mkdir -p /dock ...
- Linux系统 Centos7 环境基于Docker部署Rocketmq服务
消息队列 基本概述 MQ,Message Queue,基于TCP协议构建的简单协议,区别于具体的通信协议. 基于通信协议定义和抽象的更高层次的通信模型,一般都是生产者和消费者模型,又或者说服务端和客户 ...
随机推荐
- Java -- 获取MAC地址
啦啦啦 package com.xindatai.common.util; import java.io.InputStream; import java.util.regex.Matcher; im ...
- swift--歌曲播放示例
使用MPMoviePlayerController我们可以是进行音乐播放,如下图: 接口的话,我是自己在本地上搭建了个服务器,自己请求自己
- Cocos2dx3.0 TextField 输入中文的问题
一开始无法输入中文, 显示出来的是乱码, 修改一个函数, 下面是修改过后的代码 void GLView::onGLFWCharCallback(GLFWwindow *window, unsigned ...
- Linux od命令(以指定进制显示文件)
从“读取二进制文件”出发,到od命令的使用 在桃村实习期间,一直努力做毕业设计,我的毕业设计中有一个内容就是读取SEGY文件.在读取文件时,经常遇到的问题时你要读取浮点型数据,这时你就必须考虑你所使用 ...
- AddComponentRecursively
class AddComponentRecursively extends ScriptableWizard { var componentName : String = ""; ...
- VMware Workstation 14 黑屏的一个解决办法
近期很多朋友遇到了VMware Workstation 14开启或新建虚拟机后黑屏的现象,同时发现如果挂起虚拟机,可以显示挂起前最后的画面.显然,虚拟机核心是正常工作的,只是“显示”方面出现了问题. ...
- 【ORACLE 】查询被锁住的对象,并结束其会话
使用Oracle时,发现有表被锁,又不知道是谁(或者哪个程序)锁的,怎么办 ? 两步走: 1.查找出被锁对象的会话ID和序列号 执行如下SQL: -- 查询出被锁对象,并提供 kill 脚本 SELE ...
- Android NDK学习(3)使用Javah命令生成JNI头文件 .
转:http://www.cnblogs.com/fww330666557/archive/2012/12/14/2817387.html 第一步: 在Eclipse中创建android项目,并声明N ...
- List的五种去重方式
//set集合去重,不改变原有的顺序 public static void pastLeep1(List<String> list){ System.out.println("l ...
- Free Download Manager (FDM) 中文版 - 替代迅雷最佳免费开源下载工具软件
https://www.freedownloadmanager.org/ Free Download Manager (FDM) 是一款经典免费纯粹的下载软件,它开源无广告,界面简洁清爽,支持 BT. ...