详解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代码格式化和语法着色V2
Oct 14 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
Dec 12 Javascript
Javascript中call的两种用法实例
Dec 13 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
Dec 26 Javascript
javascript中对变量类型的判断方法
Aug 09 Javascript
简述Matlab中size()函数的用法
Mar 20 Javascript
获取jqGrid中选择的行的数据
Nov 30 Javascript
VUE预渲染及遇到的坑
Sep 03 Javascript
JavaScript 对引擎、运行时、调用堆栈的概述理解
Oct 22 Javascript
VueJS 组件参数名命名与组件属性转化问题
Dec 03 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
Apr 01 Javascript
微信小程序系列之自定义顶部导航功能
May 21 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
网络资源
2006/10/09 PHP
php+mysql删除指定编号员工信息的方法
2015/01/14 PHP
php通过pecl方式安装扩展的实例讲解
2018/02/02 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
2019/06/25 PHP
RGB颜色值转HTML十六进制(HEX)代码的JS函数
2009/04/25 Javascript
基于jquery的web页面日期格式化插件
2011/11/15 Javascript
jquery 提交值不为空的元素示例代码
2013/05/10 Javascript
浅析jquery某一元素重复绑定的问题
2014/01/03 Javascript
JavaScript跨域方法汇总
2014/10/16 Javascript
探寻Javascript执行效率问题
2014/11/12 Javascript
vue.js初学入门教程(2)
2016/11/07 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
微信小程序页面间跳转传参方式总结
2019/06/13 Javascript
layer弹出层自适应高度,垂直水平居中的实现
2019/09/16 Javascript
JS常用跨域方法实现原理解析
2020/12/09 Javascript
[46:14]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python得到单词模式的示例
2018/10/15 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
基于python历史天气采集的分析
2019/02/14 Python
python 读写excel文件操作示例【附源码下载】
2019/06/19 Python
Python实现分数序列求和
2020/02/25 Python
python爬取股票最新数据并用excel绘制树状图的示例
2021/03/01 Python
CSS3 滤镜 webkit-filter详细介绍及使用方法
2012/12/27 HTML / CSS
澳大利亚购买太阳镜和眼镜网站:Glamoureyes
2020/09/22 全球购物
职业教育毕业生求职信
2013/11/09 职场文书
质量工程师岗位职责
2013/11/16 职场文书
继电保护工岗位职责
2014/01/05 职场文书
银行委托书范本
2014/04/04 职场文书
社区文化建设方案
2014/05/02 职场文书
初中班主任经验交流材料
2014/05/16 职场文书
乔丹名人堂演讲稿
2014/05/24 职场文书
五好家庭申报材料
2014/12/20 职场文书
缅怀先烈主题班会
2015/08/14 职场文书