概述

作为一个前端,我觉得必须要学会使用 docker 干下面几件事:

  1. 部署前端应用
  2. 部署 nginx
  3. 给部署的 nginx 加上 https
  4. 使用 docker compose 进行部署
  5. 给 nginx 加上 redis
  6. 使用 kubernetes

下面我按照这个节奏一一研究一遍,把心得记录下来,供以后开发时参考,相信对其他人也有用。

参考资料:

docker nginx

Beginner’s Guide

注意:因为我正在申请域名和云服务器,所以暂时还不能给部署的 nginx 加上 https。

使用 docker compose 进行部署

在前面我们使用 docker 部署了一个 nodejs 的应用,还部署了一个 nginx。启动的时候还需要分开启动,非常麻烦,其实我们可以一键进行部署和启动的。这就是 docker-compose。

首先来说下我们的目标:

  1. 使用 docker-compose 同时部署 nodejs 和 nginx
  2. 挂载 src 目录,实现本地开发 src,远程自动热更新(本地不需要搭建环境)
  3. 挂载 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 设置里面去增加挂载目录。

进行上面的设置之后,我们:

  1. 修改了 Volumes/src 文件夹之后,0.0.0.0:5431能够自动热重载进行更新。
  2. 我们可以通过修改 Volumes/default.conf 来调整 nginx 的配置。

注意:我们这里部署的是一个开发环境,其实也可以部署一个发布环境,这个比较简单只需要挂载 dist 文件夹就行了。

4.把 src 文件夹复制到 Volumes 文件夹下面并且在里面新建 default.conf 文件。最后组装并运行。

// 有 bash 命令行
docker-compose up // 无 bash 命令行
docker-compose up -d

通过 docker ps 查看正在运行的 container,我们可以看到我们已经部署成功了。

前端必须掌握的 docker 技能(3)的更多相关文章

  1. 前端必须掌握的 docker 技能(2)

    概述 作为一个前端,我觉得必须要学会使用 docker 干下面几件事: 部署前端应用 部署 nginx 给部署的 nginx 加上 https 使用 docker compose 进行部署 给 ngi ...

  2. 前端必须掌握的 docker 技能(1)

    概述 作为一个前端,我觉得必须要学会使用 docker 干下面几件事: 部署前端应用 部署 nginx 给部署的 nginx 加上 https 使用 docker compose 进行部署 给 ngi ...

  3. 将你的前端应用打包成docker镜像并部署到服务器?仅需一个脚本搞定

    1.前言 前段时间,自己搞了个阿里云的服务器.想自己在上面折腾,但是不想因为自己瞎折腾而污染了现有的环境.毕竟,现在的阿里云已经没有免费的快照服务了.要想还原的话,最简单的办法就是重新装系统.而一旦重 ...

  4. web前端开发需要具备的技能

    web前端开发需要具备以下7种技能: 1.页面标记(HTML) HTML页面固定,标签不多,相对来说学起来比较容易.编写HTML代码需遵循HTML代码规范(http://www.cnblogs.com ...

  5. 八卦某 G 的前端开发方式及流程--百度FEX前端nwind信息搜集神技能

    他山之石,可以攻玉. 话说本人从毕业到现在一直在某 B 公司工作,前些年折腾过不少开发方式和工具,但总觉得或许有更好的方案,所以很好奇其它公司内部是如何工作的,我曾经浏览过某 Y 公司内部无所不包的 ...

  6. 前端必须掌握的 nginx 技能(4)

    概述 作为一个前端,我觉得必须要学会使用 nginx 干下面几件事: 代理静态资源 设置反向代理(添加https) 设置缓存 设置 log 部署 smtp 服务 设置 redis 缓存(选) 下面我按 ...

  7. 前端必须掌握的 nginx 技能(3)

    概述 作为一个前端,我觉得必须要学会使用 nginx 干下面几件事: 代理静态资源 设置反向代理(添加https) 设置缓存 设置 log 部署 smtp 服务 设置 redis 缓存(选) 下面我按 ...

  8. 前端必须掌握的 nginx 技能(2)

    概述 作为一个前端,我觉得必须要学会使用 nginx 干下面几件事: 代理静态资源 设置反向代理(添加https) 设置缓存 设置 log 部署 smtp 服务 设置 redis 缓存(选) 下面我按 ...

  9. 前端必须掌握的 nginx 技能(1)

    概述 作为一个前端,我觉得必须要学会使用 nginx 干下面几件事: 代理静态资源 设置反向代理(添加https) 设置缓存 设置 log 部署 smtp 服务 设置 redis 缓存(选) 下面我按 ...

随机推荐

  1. h5与app混合开发,jsbridge

    https://juejin.im/post/5bda6f276fb9a0226d18931f https://juejin.im/post/5abca877f265da238155b6bc http ...

  2. 扇形导航 css3

    本篇文章将通过对css3中的2d变化以及过渡进行分析设计 先放上最终效果图                 功能实现:1.给扇形home元素设置点击事件并添加2d旋转 2.给导航栏设置2d旋转 并通过 ...

  3. caffe数据集LMDB的生成

    本文主要介绍如何在caffe框架下生成LMDB.其中包含了两个任务的LMDB生成方法,一种是分类,另外一种是检测. 分类任务 第一步  生成train.txt和test.txt文件文件 对于一个监督学 ...

  4. 利用urllib.urlopen向有道翻译发送数据获得翻译结果

    from urllib import request,parseimport requests, sys,ssl,json ssl._create_default_https_context = ss ...

  5. chrome 开发者工具 - local overrides

    使用chrome 作为本地网络服务 chrome 65+ 新功能, 使用我们自己的本地资源覆盖网页所使用的资源,可以使用本地css文件覆盖网页的css文件,修改样式. 类似的,使用DevTools的工 ...

  6. springboot返回html和jsp

    一.返回html (1)添加maven依赖 <dependency>    <groupId>org.springframework.boot</groupId>  ...

  7. 透彻的了解Linux系统故障并解决

    透彻的了解Linux系统故障并解决 2009-12-25 10:24 佚名 NET130 字号:T | T 经常应用Windows操作系统时,我们会很多的系统故障,于是很多人开始应用Linux操作系统 ...

  8. python基础31[python IDE之Eclipse+PyDev]

    一 入门IDE作为python的初学者,在语法和类库学习阶段,我们可以使用以下简单使用的IDE:1) Python SDK 自带的IDEL(Python GUI)2) Komodo-Edit3) No ...

  9. Apache服务器配置https

    https://startssl.com这个网站可以给我们免费提供可信任的https证书,这里简单介绍一下配置的过程. 首先服务器需要安装openssl和apache的mod_ssl.so模块,并且需 ...

  10. 系统命令模块subprocess

    系统命令 可以执行shell命令的相关模块和函数有: os.system os.spawn* os.popen* --废弃 popen2.* --废弃 commands.* --废弃,3.x中被移除 ...