详解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 相关文章推荐
jquery nth-child()选择器的简单应用
Jul 10 Javascript
js时间日期和毫秒的相互转换
Feb 22 Javascript
用表格输出1-1000之间的数字实现代码(附特效)
Apr 21 Javascript
js实现的奥运倒计时时钟效果代码
Dec 09 Javascript
基于JS2Image实现圣诞树代码
Dec 24 Javascript
javascript 单例模式详解及简单实例
Feb 14 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
Sep 03 jQuery
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
Feb 19 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
Feb 05 Javascript
浅谈vue 组件中的setInterval方法和window的不同
Jul 30 Javascript
微信小程序轮播图swiper代码详解
Dec 01 Javascript
javascript遍历对象的五种方式实例代码
Oct 24 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
德劲1104的电路分析与改良
2021/03/01 无线电
ThinkPHP基于PHPExcel导入Excel文件的方法
2014/10/15 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
2015/05/12 PHP
php实现的日历程序
2015/06/18 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
JavaScript打开word文档的实现代码(c#)
2012/04/16 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
jQuery实现自定义checkbox和radio样式
2015/07/13 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
Bootstrap3 图片(响应式图片&图片形状)
2017/01/04 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
2017/02/27 Javascript
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
2017/11/28 Javascript
利用nginx + node在阿里云部署https的步骤详解
2017/12/19 Javascript
vue router 源码概览案例分析
2018/10/09 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
2019/12/20 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
JavaScript实现像雪花一样的Hexaflake分形
2020/07/07 Javascript
vue导入.md文件的步骤(markdown转HTML)
2020/12/31 Vue.js
使用Python设置tmpfs来加速项目的教程
2015/04/17 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
python中threading开启关闭线程操作
2020/05/02 Python
澳大利亚波西米亚风连衣裙在线商店:Fortunate One
2019/04/01 全球购物
美国时尚大码女装购物网站:Avenue
2019/05/24 全球购物
女子职高个人自荐书
2014/02/01 职场文书
会务接待方案
2014/02/27 职场文书
一年级班主任感言
2014/03/08 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
2015教师节通讯稿
2015/07/20 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
2021/05/25 Python