详解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 显示当前日期与时间的代码
Mar 24 Javascript
javaScript 动态访问JSon元素示例代码
Aug 30 Javascript
浅析JavaScript基本类型与引用类型
May 28 Javascript
js生成的验证码的实现与技术分析
Sep 17 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
Oct 29 Javascript
浅谈 javascript 事件处理
Jan 04 Javascript
JS实现向iframe中表单传值的方法
Mar 24 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
Mar 07 Javascript
支付宝小程序自定义弹窗dialog插件的实现代码
Nov 30 Javascript
详解基于React.js和Node.js的SSR实现方案
Mar 21 Javascript
ES6 Map结构的应用实例分析
Jun 26 Javascript
vscode 插件开发 + vue的操作方法
Jun 05 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
php mysql索引问题
2008/06/07 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
2011/11/10 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
2013/06/24 PHP
下拉列表多级联动dropDownList示例代码
2013/06/27 PHP
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
2011/02/24 Javascript
node.js中的fs.fstat方法使用说明
2014/12/15 Javascript
node.js中的fs.closeSync方法使用说明
2014/12/17 Javascript
原生js制作简单的数字键盘
2015/04/24 Javascript
jQuery替换textarea中换行的方法
2015/06/10 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
js实现将选中值累加到文本框的方法
2015/08/12 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
2017/01/04 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
node中间层实现文件上传功能
2018/06/11 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
vue.js中导出Excel表格的案例分析
2019/06/11 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
javascript实现时间日期的格式化的方法汇总
2020/08/06 Javascript
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
Python中模块与包有相同名字的处理方法
2017/05/05 Python
浅析使用Python操作文件
2017/07/31 Python
python实现K近邻回归,采用等权重和不等权重的方法
2019/01/23 Python
详解python爬虫系列之初识爬虫
2019/04/06 Python
python批量处理txt文件的实例代码
2020/01/13 Python
PyCharm2019 安装和配置教程详解附激活码
2020/07/31 Python
TripAdvisor日本:全球领先的旅游网站
2019/02/14 全球购物
毕业生自荐信
2013/12/14 职场文书
拾金不昧的表扬信
2014/01/16 职场文书
市政管理求职信范文
2014/05/07 职场文书
白酒营销策划方案
2014/08/17 职场文书
工作简历自我评价
2015/03/11 职场文书
晚会主持人开场白台词
2015/05/28 职场文书
MySQL数据库事务的四大特性
2022/04/20 MySQL