详解angular应用容器化部署


Posted in Javascript onAugust 14, 2018

Intro

我自己有做一个个人主页,虽然效果不怎么样(不懂设计的典型程序猿...),但是记录了我对于前端框架及工具的一些实践,

从开始只有一个 angularjs 制作的页面到后面加入 less 动态写css, gulp 自动化的将 less 文件编译成 css 文件以及自动化的压缩 js 和 css,到后面加入的基于 vue 和 angular 实现,主要维护的是基于 angular 的,目前 angular 的个人主页已经支持 PWA(Progressive Web Application),前几天添加了 docker 部署的支持,记录一篇文章记录一下。

编写 dockerfile

完整的 dockerfile 如下:

FROM node
# set working directory
WORKDIR /app

# install and cache app dependencies
COPY . /app

# install dependencies and build the angular app
RUN yarn && yarn run build

FROM nginx:stable-alpine

# copy from dist to nginx root dir
COPY --from=builder /app/dist/weihanli /usr/share/nginx/html

# expose port 80
EXPOSE 80

# set author info
LABEL maintainer="WeihanLi"

# run nginx in foreground
# https://stackoverflow.com/questions/18861300/how-to-run-nginx-within-a-docker-container-without-halting
CMD ["nginx", "-g", "daemon off;"]

整个 dockerfile 可分为两部分,第一部分是编译 angular 应用,生成最后要部署的文件。

第二部分则是将生成的部分拷贝到基于 nginx 的环境中,部署到 nginx 中

打包 docker 镜像

通过 docker build 命令打包 docker 镜像,详细命令使用参考 https://docs.docker.com/engine/reference/commandline/build/

docker build -t weihanli/homepage .

启动容器

docker run

通过 docker run 命令启动一个容器,部署打包好的镜像,详细命令使用参考 https://docs.docker.com/engine/reference/commandline/run/

docker run -p:5200:80 --rm --name homepage-demo weihanli/homepage

docker compose

通过 docker-compose.yml 启动容器,启动命令: docker-compose up

更多 compose 信息参考 https://docs.docker.com/compose/compose-file

docker-compose.yml 文件如下:

version: "3"
services:
 web:
  image: "weihanli/homepage"
  container_name: "weihanli-homepage-demo"
  ports:
    - "5200:80"

访问容器中的应用

访问 http://localhost:5200 ,即可访问到容器中部署的应用

More

项目源代码: https://github.com/WeihanLi/weihanli.github.io

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 函数的执行环境和作用域链的深入解析
Nov 01 Javascript
jquery ajax abort()的使用方法
Oct 28 Javascript
JavaScript回调(callback)函数概念自我理解及示例
Jul 04 Javascript
JS下拉框内容左右移动效果的具体实现
Jul 10 Javascript
node.js中的http.response.addTrailers方法使用说明
Dec 14 Javascript
jQuery结合CSS制作动态的下拉菜单
Oct 27 Javascript
BootStrap智能表单demo示例详解
Jun 13 Javascript
Angular 4依赖注入学习教程之简介(一)
Jun 04 Javascript
基于JavaScript实现百度搜索框效果
Jun 28 Javascript
BootStrap实现文件上传并带有进度条效果
Sep 11 Javascript
jQuery - AJAX load() 实例用法详解
Aug 27 jQuery
JavaScript实现页面高亮操作提示和蒙板
Jan 04 Javascript
使用node.js实现微信小程序实时聊天功能
Aug 13 #Javascript
JQuery通过后台获取数据遍历到前台的方法
Aug 13 #jQuery
AngularJS实现与后台服务器进行交互的示例讲解
Aug 13 #Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
Aug 13 #Javascript
Angularjs 根据一个select的值去设置另一个select的值方法
Aug 13 #Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
Aug 13 #Javascript
JavaScript面向对象程序设计创建对象的方法分析
Aug 13 #Javascript
You might like
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
Jquery 插件开发笔记整理
2011/01/17 Javascript
解析JavaScript中的标签语句
2013/06/19 Javascript
关于删除时的提示处理(确定删除吗)
2013/11/03 Javascript
扒一扒JavaScript 预解释
2015/01/28 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
2016/04/12 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
iphone刘海屏页面适配方法
2019/05/07 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
2020/04/15 Javascript
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
python实现dnspod自动更新dns解析的方法
2014/02/14 Python
python结合opencv实现人脸检测与跟踪
2015/06/08 Python
python实现判断数组是否包含指定元素的方法
2015/07/15 Python
python万年历实现代码 含运行结果
2017/05/20 Python
Python字典及字典基本操作方法详解
2018/01/30 Python
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
用python编写第一个IDA插件的实例
2018/05/29 Python
Python 中的lambda函数介绍
2018/10/10 Python
使用Scrapy爬取动态数据
2018/10/21 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
美国最大的宠物用品零售商:PetSmart
2016/11/14 全球购物
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
JDK安装目录下有哪些内容
2014/08/25 面试题
Internet主要有哪些网络群组成
2015/12/24 面试题
Java基础知识面试题
2014/03/25 面试题
业务员的岗位职责
2014/03/15 职场文书
创先争优公开承诺书
2014/08/30 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书