基于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协议构建的简单协议,区别于具体的通信协议. 基于通信协议定义和抽象的更高层次的通信模型,一般都是生产者和消费者模型,又或者说服务端和客户 ...
随机推荐
- 九度 1494:Dota(完全背包)
题目描述: 大家都知道在dota游戏中,装备是对于英雄来说十分重要的要素.英雄们不仅可以购买单个的装备,甚至某些特定的装备组合能够合成更强的装备.为了简化问题,我们将每个装备对于英雄的功能抽象为一个整 ...
- ios开发之--MJRefresh的简单使用
MJRefresh是MJ大神写的框架,很强大,好多外国开发者都在用! 具体方法如下: -(void)requestData { NSString *userIdStr = [NSString stri ...
- Explaining Delegates in C# - Part 1 (Callback and Multicast delegates)
I hear a lot of confusion around Delegates in C#, and today I am going to give it shot of explaining ...
- Disruptor LMAX学习
http://lmax-exchange.github.io/disruptor/ http://bruce008.iteye.com/blog/1408075 http://code.google. ...
- Ajax 结果提取
Python 如何提取 Ajax 真正响应的内容: 以 https://m.weibo.cn/u/2830678474 这个网页为例,选择其中一个 Ajax 请求,找到请求的URL和传递的参数 imp ...
- 如何使Ubuntu Linux12.04 LTS版可以用root用户登陆
如何使Ubuntu Linux12.04 LTS版可以用root用户登陆 1. 用普通用户登录2. 在终端执行sudo -s,然后输入当前登录的普通用户密码,进入到root用户模式3. 执行ge ...
- 顶点纹理shader
Shader "Custom/VertDisplace" { Properties { _MainTex ("Base (RGB)", 2D) = " ...
- C语言实现字符串IP与整数型IP的相互转换
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <malloc.h&g ...
- 《JavaScript 秘密花园》
恰巧今天是传统民间重要的节日之一--七夕节: 被大家挂在嘴上最多的一句话便是:有对象了吗?这不-- 这样的话,那咱就先给new出一个对象吧: var boyfriend = new Object(); ...
- 驱动保护中的ObjectType_Callback探索
最近学习驱动保护,有点小小心德与大家分享下. 当前环境:VM中的win7 32 保护程序是某游戏的驱动保护. 具体现象是:在用PCHunter工具查看object钩子时发现如下的信息: 疑问点1:在H ...