详解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 相关文章推荐
一个对于Array的简单扩展
Oct 03 Javascript
JS读取cookies信息(记录用户名)
Jan 10 Javascript
javascript显示用户停留时间的简单实例
Aug 05 Javascript
Node.js中创建和管理外部进程详解
Aug 16 Javascript
微信小程序 loading(加载中提示框)实例
Oct 28 Javascript
原生js编写焦点图效果
Dec 08 Javascript
bootstrap选项卡扩展功能详解
Jun 14 Javascript
Angular2环境搭建具体操作步骤(推荐)
Aug 04 Javascript
微信小程序中如何计算距离某个节日还有多少天
Jul 15 Javascript
node.js中path路径模块的使用方法实例分析
Feb 13 Javascript
在react项目中使用antd的form组件,动态设置input框的值
Oct 24 Javascript
前端vue+express实现文件的上传下载示例
Feb 18 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
最省空间的计数器
2006/10/09 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
2013/06/21 PHP
浅析PHP页面局部刷新功能的实现小结
2013/06/21 PHP
php简单计算页面加载时间的方法
2015/06/19 PHP
基于PHP实现的多元线性回归模拟曲线算法
2018/01/30 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
用javascript实现给出的盒子的序列是否可连为一矩型
2007/08/30 Javascript
javascript+css 网页每次加载不同样式的实现方法
2009/12/27 Javascript
用Jquery重写windows.alert方法实现思路
2013/04/03 Javascript
浅谈JavaScript之事件绑定
2013/07/08 Javascript
首页图片漂浮效果示例代码
2014/06/05 Javascript
纯javascript实现简单下拉刷新功能
2015/03/13 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
jquery获取节点名称
2015/04/26 Javascript
使用Node.js配合Nginx实现高负载网络
2015/06/28 Javascript
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
基于vue.js快速搭建图书管理平台
2017/10/29 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
2018/08/10 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
CountUp.js实现数字滚动增值效果
2019/10/17 Javascript
VUE 动态组件的应用案例分析
2019/12/02 Javascript
nodejs环境使用Typeorm连接查询Oracle数据
2019/12/05 NodeJs
[04:32]DOTA2著名解说配音敌法师 现场专访海涛怒切假腿
2013/12/20 DOTA
Python实现竖排打印传单手机号码易撕条
2015/03/16 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
Python闭包函数定义与用法分析
2018/07/20 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
Python通过两个dataframe用for循环求笛卡尔积
2020/04/29 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
网站开发实习生的自我评价
2013/12/11 职场文书
学子宴答谢词
2014/01/25 职场文书
课改先进个人汇报材料
2014/01/26 职场文书
撤诉书怎么写
2015/05/19 职场文书
2019辞职报告范本3篇!
2019/07/23 职场文书