前端必须掌握的 docker 技能(3)
概述
作为一个前端,我觉得必须要学会使用 docker 干下面几件事:
- 部署前端应用
- 部署 nginx
- 给部署的 nginx 加上 https
- 使用 docker compose 进行部署
- 给 nginx 加上 redis
- 使用 kubernetes
下面我按照这个节奏一一研究一遍,把心得记录下来,供以后开发时参考,相信对其他人也有用。
参考资料:
注意:因为我正在申请域名和云服务器,所以暂时还不能给部署的 nginx 加上 https。
使用 docker compose 进行部署
在前面我们使用 docker 部署了一个 nodejs 的应用,还部署了一个 nginx。启动的时候还需要分开启动,非常麻烦,其实我们可以一键进行部署和启动的。这就是 docker-compose。
首先来说下我们的目标:
- 使用 docker-compose 同时部署 nodejs 和 nginx
- 挂载 src 目录,实现本地开发 src,远程自动热更新(本地不需要搭建环境)
- 挂载 nginx 配置,实现本地修改 nginx 配置
步骤
1.作为示例,我们使用使用以下命令创建一个新的 vue 项目:
vue create vue-demo
2.在主目录文件夹下面建立 Dockerfile 和 .dockerignore 文件:
// Dockerfile
FROM node:latest
WORKDIR /app/vue-demo
COPY . /app/vue-demo
RUN npm install
CMD npm run serve
// .dockerignore
node_modules
3.编写 docker-compose 文件,示例如下:
version: '3.7'
services:
web:
build:
context: ./
dockerfile: ./Dockerfile
image: "vue-demo"
ports:
- "5431:8080"
volumes:
- ./Volumes/src:/app/vue-demo/src
nginx:
image: "nginx"
ports:
- "5432:80"
volumes:
- ./Volumes/default.conf:/etc/nginx/conf.d/default.conf
// version 表示用什么版本的 docker-compose
// web 和 nginx 是我们自己取的名字
// 我们用 build 来指定 dockerfile,注意这里需要先指定 context 为主目录
// 我们指定本机的 5431 端口连接 docker 的 8080 端口(8080 是 vue-demo 启动 npm run serve 时的端口)
// 我们挂载 Volumes 文件夹下的 src 到 docker 的 src(/app/vue-demo 是在 Dockerfile 里面写的目录)
// nginx 我们使用 nginx 镜像,而不是用 Dockerfile 生成
// 我们指定本机的 5432 端口 连接 docker 的 80 端口(80 端口是 nginx 代理的端口)
// 我们挂载 Volumes 文件夹下的 default.conf 到 docker 的 default.conf
注意:这里需要新建一个 Volumes 文件夹(挂载目录),然后在里面放入挂载文件。否则需要在 docker 设置里面去增加挂载目录。
进行上面的设置之后,我们:
- 修改了 Volumes/src 文件夹之后,
0.0.0.0:5431能够自动热重载进行更新。 - 我们可以通过修改 Volumes/default.conf 来调整 nginx 的配置。
注意:我们这里部署的是一个开发环境,其实也可以部署一个发布环境,这个比较简单只需要挂载 dist 文件夹就行了。
4.把 src 文件夹复制到 Volumes 文件夹下面并且在里面新建 default.conf 文件。最后组装并运行。
// 有 bash 命令行
docker-compose up
// 无 bash 命令行
docker-compose up -d
通过 docker ps 查看正在运行的 container,我们可以看到我们已经部署成功了。
前端必须掌握的 docker 技能(3)的更多相关文章
- 前端必须掌握的 docker 技能(2)
概述 作为一个前端,我觉得必须要学会使用 docker 干下面几件事: 部署前端应用 部署 nginx 给部署的 nginx 加上 https 使用 docker compose 进行部署 给 ngi ...
- 前端必须掌握的 docker 技能(1)
概述 作为一个前端,我觉得必须要学会使用 docker 干下面几件事: 部署前端应用 部署 nginx 给部署的 nginx 加上 https 使用 docker compose 进行部署 给 ngi ...
- 将你的前端应用打包成docker镜像并部署到服务器?仅需一个脚本搞定
1.前言 前段时间,自己搞了个阿里云的服务器.想自己在上面折腾,但是不想因为自己瞎折腾而污染了现有的环境.毕竟,现在的阿里云已经没有免费的快照服务了.要想还原的话,最简单的办法就是重新装系统.而一旦重 ...
- web前端开发需要具备的技能
web前端开发需要具备以下7种技能: 1.页面标记(HTML) HTML页面固定,标签不多,相对来说学起来比较容易.编写HTML代码需遵循HTML代码规范(http://www.cnblogs.com ...
- 八卦某 G 的前端开发方式及流程--百度FEX前端nwind信息搜集神技能
他山之石,可以攻玉. 话说本人从毕业到现在一直在某 B 公司工作,前些年折腾过不少开发方式和工具,但总觉得或许有更好的方案,所以很好奇其它公司内部是如何工作的,我曾经浏览过某 Y 公司内部无所不包的 ...
- 前端必须掌握的 nginx 技能(4)
概述 作为一个前端,我觉得必须要学会使用 nginx 干下面几件事: 代理静态资源 设置反向代理(添加https) 设置缓存 设置 log 部署 smtp 服务 设置 redis 缓存(选) 下面我按 ...
- 前端必须掌握的 nginx 技能(3)
概述 作为一个前端,我觉得必须要学会使用 nginx 干下面几件事: 代理静态资源 设置反向代理(添加https) 设置缓存 设置 log 部署 smtp 服务 设置 redis 缓存(选) 下面我按 ...
- 前端必须掌握的 nginx 技能(2)
概述 作为一个前端,我觉得必须要学会使用 nginx 干下面几件事: 代理静态资源 设置反向代理(添加https) 设置缓存 设置 log 部署 smtp 服务 设置 redis 缓存(选) 下面我按 ...
- 前端必须掌握的 nginx 技能(1)
概述 作为一个前端,我觉得必须要学会使用 nginx 干下面几件事: 代理静态资源 设置反向代理(添加https) 设置缓存 设置 log 部署 smtp 服务 设置 redis 缓存(选) 下面我按 ...
随机推荐
- 现身说法:面对DDoS攻击时该如何防御?
上周,我们的网站遭到了一次DDoS攻击.虽然我对DDoS的防御还是比较了解,但是真正遇到时依然打了我个措手不及.DDoS防御是一件比较繁琐的事,面对各种不同类型的攻击,防御方式也不尽相同.对于攻击来的 ...
- PHP WEB 引擎缓存加速优化
PHP 缓存加速器介绍 操作码缓存 请求一个 PHP 程序时,PHP 引擎会解析程序,并且将编译码作为特定操作码.这是要执行的代 码的一种二进制表示形式.随后,此操作码有 PHP 引擎执行并丢弃.操作 ...
- Linux crontab计划任务
1.cron计划任务的描述 cron计划任务允许用户根据“时间表”自动周期的完成任务某些任务. cron是一种system V服务,需要开启该服务才能使用. ...
- mysql之innodb存储引擎
mysql之innodb存储引擎 innodb和myisam区别 1>.InnoDB支持事物,而MyISAM不支持事物 2>.InnoDB支持行级锁,而MyISAM支持表级锁 3>. ...
- Ansible批量部署工具
Ansible:自动化运维工具 你需要在一台机器上yum install 一个包,这时候有一个需求,比如现在有5台机同时需要装apache这个包,那么100台呢,ssh上去就太慢了,这时候就借助到了a ...
- Oracle 之 触发器
触发器是特定的事件出现的时候,自动隐式执行代码块,这个过程用户无法控制,用户只能控制触发的事件,触发后的操作,触发过程是自动执行的. 定义触发器: 1.名称 2.触发时间:是在执行事件之前(befor ...
- WinEdit编辑器中中文乱码
这个问题困扰了我很久.我的电脑上装的CTEX的最新版本,原来我的系统是windows 7 64位系统.装好了CTEX之后,在里面可以直接输入中文,显示和编译生成的PDF文件都正常.但是后来系统崩溃了一 ...
- git shell 右键启动注册表
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Background\shell\Git Bash Here] ): ...
- Python开发WebService--使用soaplib库
Python开发WebService--使用soaplib库 使用soaplib开发基于Python语言的WebService主要有以下四个步骤:一.准备环境 S1:下载插件Python.s ...
- Kafka(华为FusionInsight )操作命令
华为大数据kafka操作web界面创建角色.用户.用户管理角色进入服务器环境,进入客户端目录/opt/hadoopclient,导入环境变量source bigdata_env.切换用户kinit k ...