详解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 相关文章推荐
javascript学习随笔(使用window和frame)的技巧
Mar 08 Javascript
JS实现简单的图书馆享元模式实例
Jun 30 Javascript
微信小程序 教程之WXSS
Oct 18 Javascript
如何使用bootstrap框架 bootstrap入门必看!
Apr 13 Javascript
利用Vue.js+Node.js+MongoDB实现一个博客系统(附源码)
Apr 24 Javascript
详解前端路由实现与react-router使用姿势
Aug 07 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
Sep 27 Javascript
JS浮点数运算结果不精确的Bug解决
Aug 01 Javascript
浅谈vue 多个变量同时赋相同值互相影响
Aug 05 Javascript
在vue中使用image-webpack-loader实例
Nov 12 Javascript
vue如何使用rem适配
Feb 06 Vue.js
Vue2.0搭建脚手架
Mar 13 Vue.js
使用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
PHP.MVC的模板标签系统(三)
2006/09/05 PHP
修改PHP的memory_limit限制的方法分享
2012/02/21 PHP
php数据库备份还原类分享
2014/03/20 PHP
PHP设计模式之工厂模式详解
2017/10/24 PHP
JS网页播放声音实现代码兼容各种浏览器
2013/09/22 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
如何编写高质量JS代码(续)
2015/02/25 Javascript
使用window.prompt()实现弹出用户输入的对话框
2015/04/13 Javascript
使用vue编写一个点击数字计时小游戏
2016/08/31 Javascript
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
微信小程序canvas实现签名功能
2021/01/19 Javascript
[51:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[01:23:45]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第一场 1月22日
2021/03/11 DOTA
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
python中list列表的高级函数
2016/05/17 Python
python利用正则表达式提取字符串
2016/12/08 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
pandas的排序和排名的具体使用
2019/07/31 Python
使用HTML5中的contentEditable来将多行文本自动增高
2016/03/01 HTML / CSS
银行会计业务的个人自我评价
2013/11/02 职场文书
机电专业个人求职信范文
2013/12/30 职场文书
项目计划书范文
2014/01/09 职场文书
死亡证明书样本说明
2014/10/18 职场文书
对公司的意见和建议
2015/06/04 职场文书
2016年端午节寄语
2015/12/04 职场文书
学习心理学心得体会
2016/01/22 职场文书
初中历史教学反思
2016/02/19 职场文书
让人感觉高大上的讲话稿怎么写?
2019/07/08 职场文书
使用 JavaScript 制作页面效果
2021/04/21 Javascript
python基于tkinter制作下班倒计时工具
2021/04/28 Python
Python 可迭代对象 iterable的具体使用
2021/08/07 Python
MySQL创建管理KEY分区
2022/04/13 MySQL