利用Docker容器搭建高效的Node.js开发环境

https://zhuanlan.zhihu.com/p/28438774

开发环境优化

把数据保存在容器中并不是一种值得推荐的做法,抛开Docker守护进程和容器本身的稳定性不说,容器也存在一定被误删的可能性。 而这种共享卷的方式有个更麻烦的问题是所有想利用这个缓存卷的容器目录结构都必须是 /project/node_modules,这样的限制就显得很不友好了。 另外用来缓存卷的容器基本上算是浪费了,起不到什么实质性的作用。

顺着挂载卷这条线索继续往下找,便可以发现更好的解决方法:创建一个Docker volume用来共享容器间的数据。

docker volume create node_modules7

首先的好处便是这个volume可以叫任意名字,也可以挂载到容器不同的路径下。这里之所以加上“7”是因为不同npm版本组织模块的方式会有些不同,这里通过对node版本号来进行标注,表示这些模块可用于Node.js 7版本。

这时候创建容器我们便可以用node_modules7这个volume进行挂载了

docker run -itd -v C:\Repo\project:/project -v node_modules7:/project/node_modules --name project node:7-alpine

这次我们安装underscore测试一下

docker exec -it project npm i underscore

依旧创建一个临时容器看看是否安装成功,不过我们挂载到容器的/app/node_modules目录下试试

docker exec -it --rm -v node_modules7:/app/node_modules -w /project node:7-alpine ls node_modules

显示underscore目录,表示模块共享成功。

我的笔记,多阶段构建镜像Dockerfile

FROM node:16.14.0-alpine3.15 AS install_deps
ARG HTTP_PROXY=""
ARG HTTPS_PROXY=""
WORKDIR /app
COPY ruoyi-ui /app
RUN yarn installFROM node:16.14.0-alpine3.15 AS build
WORKDIR /app
COPY ruoyi-ui /app
COPY --from=install_deps /app/node_modules /app/node_modules
RUN yarn run buildFROM nginx:stable-alpine
COPY --from=build /app/dist /usr/share/nginx/html

说明

使用如下docker build命令 多阶段构建镜像。
推荐提前安装 docker 社区版本。

docker build \-t my_http_service:latest \-f Dockerfile .# 备注:
# 如果无法上外网或需要科学上网取回国外github服务器的资源,
# 则需要指定本地的代理服务器地址。
# 如下所示添加--build-arg
# docker build \
#   --build-arg HTTP_PROXY="http://172.16.5.115:8580" \
#   --build-arg HTTPS_PROXY="http://172.16.5.115:8580"  \
#   -t my_http_service:latest \
#   -f Dockerfile .

启动

上述命令编译成功后,使用docker run启动 http 服务

docker run -itd --rm -p 8080:80 my_http_service
docker volume create cached_node_modulesdocker run -it --rm \-v `pwd`/ruoyi-ui:/app \-v cached_node_modules:/app/node_modules \-w /app \-e https_proxy="http://172.16.5.115:8580" \-e http_proxy="http://172.16.5.115:8580" \--name myvue \node:lts-alpine yarn install
docker run -it --rm \-v `pwd`/ruoyi-ui:/app \-v cached_node_modules:/app/node_modules \-w /app \--name my_vue_build node:lts-alpine yarn run build
docker build \--build-arg HTTP_PROXY="http://172.16.5.115:8580" \--build-arg HTTPS_PROXY="http://172.16.5.115:8580"  \-t vue_nginx_test1:latest \-f Dockerfile .

http://www.taodudu.cc/news/show-1600091.html

相关文章:

  • 2022-03-13 转载 Dockerfile 高阶使用指南及镜像优化
  • 2022-03-21 转载办公室之常用职位(英汉)
  • 2022-03-23 转载C++中std::auto_ptr被废弃,由std::unique_ptr代替的原因
  • 2022-03-28 术语MES、WMS
  • 2022-03-29 软件外包流程
  • 阿群笔记:CentOS7 在线安装 docker 的推荐方法
  • 查询天地图访问配额 https://console.tianditu.gov.cn/api/statistics
  • pgRouting参考资料
  • 2022-04-11 查询PostGIS和pgRouting的版本号
  • 转载:WMS、TMS、OMS、WCS都是什么?
  • svnWebUI
  • 2022-04-25 安装PostgreSQL的发现小bug
  • 开源WebGIS实施方案
  • 基于html5 Canvas图表库 : ECharts
  • 基于ECharts+百度地图开发散点扩散图
  • JSP基于JDBC操作MSSQL2008数据库
  • JavaScript获取java变量值
  • 用纯JSP实现按条件查询数据库
  • JSP中调用java类中的方法
  • jqGrid获取数据库数据的方式
  • 基于JDBC从数据库中读取数据,在百度地图批量标注地点
  • 基于JSP的数据库增删改查实现
  • HTML网页中table居中和表格内容居中
  • 为什么程序员也能成为伟大的CEO
  • 周鸿祎:有的人在25岁时就死了,但在75岁时才被埋葬
  • Bootstrap简洁、直观、强悍的前端开发框架
  • 《Java Web开发入门很简单》学习笔记
  • 5年赚50倍的段永平:这几家公司正在长长的坡上滚着厚厚的雪
  • SQL Server触发器创建、删除、修改、查看
  • MS SQL SERVER2005更新触发器

2022-03-07 学习docker开发vue前端相关推荐

  1. 前端开发需要学python吗_在选择学习Python开发还是前端开发时需要考虑哪些因素...

    首先,从技术体系结构来看,Python开发与前端开发是两个不同的学习方向,未来所从事的岗位和面对的任务场景也有较为明显的不同,但是Python开发与前端开发本身的发展前景都是比较不错的,未来的就业空间 ...

  2. linux系统下docker搭建vue前端项目开发运行环境详解

    1. 初衷 最近做了几个前后端项目,在前后端项目链条的时候,发现在windows系统下安装前端发过来的vue项目的依赖的时候各种报错, npm install一直无法安装,但是我在linux系统下面安 ...

  3. 2022.03.04 学习笔记 IPCC相关

    联合国政府间气候变化专门委员会(Intergovernmental Panel on Climate Change,IPCC)是世界气象组织(WMO)及联合国环境规划署(UNEP)于1988年联合建立 ...

  4. Vue项目部署及使用WebStorm开发Vue

    Vue项目部署及使用WebStorm开发Vue Vue项目部署 搭建Vue环境 新建Vue项目 使用WebStorm开发Vue WebStorm相关配置 配置路由 全局页面App.vue 全局引入组件 ...

  5. 【Vue前端开发学习】第2章,Vue项目目录结构

    文章目录 前言 一.新增router文件夹及其配置方法 二.新增store文件夹及其配置方法 三.index.html.App.vue.main.js三者之间的联系 前言   上一章节,通过Pycha ...

  6. 174款前端开发工具汇总,学习,开发,事半功倍!

    我们与企业内部的Web开发团队进行了很多次交流,研究了很长时间,最后将Debug工具与Web前端开发工具整理汇总在了一起,这些工具对每个Web开发人员都非常有用. 这些工具将使您的工作更加轻松,特别是 ...

  7. 2022年中高级前端需要学习的25种前端技术栈

    昨天是虎年开工第一天,我们又要投入到忙碌的工作和生活中了.以下是我研究整理的2022年中高级前端养成指南,收藏起来,从开工第一天起,立下全新的计划和目标,愿你在虎年龙腾虎跃.虎虎生威. 1.REST ...

  8. VUE项目学习(一):搭建VUE前端项目

    VUE项目学习(一):搭建VUE前端项目 1.安装node.js环境 (1)下载node.js,下载地址为:https://nodejs.org/en/ (2)按照默认选项安装node,检查安装版本 ...

  9. 视频教程-VUE前端开发/前后端分离-Java

    VUE前端开发/前后端分离 13年软件开发经验,设计开发30多个大型软件,涉及政府.银行.电信.能源等大型软件项目. 精通J2EE体系架构,熟练使用Struts.Spring.hibernate.ib ...

最新文章

  1. 我招了个“水货”程序员
  2. IE弹出窗口显示URL地址栏
  3. Spark ML - 协同过滤
  4. leetcode28. 实现 strStr(KMP详解)
  5. iview form 表单 自定义参数验证 validate
  6. 日常spoken英语学习
  7. LeetCode 1145. 二叉树着色游戏(计算节点个数)
  8. 如何保护python代码_如何在发布之前保护我的Python代码?
  9. java.util.timertask_java.util.TimerTask翻译
  10. 积分上下限无穷_数学分析|第九章 定积分利用等价无穷小量和定积分定义解决数列极限问题总结...
  11. 【系统设计】发现类的方法
  12. VSCode 调试 Egg 完美版 - 进化史 #25
  13. 活动推荐 | 首届云原生编程挑战赛开始报名啦~
  14. 传智播客java测试题_传智播客java笔试题
  15. 英文IT电子书下载:www.foxebook.net
  16. 基于标记的分水岭分割算法
  17. 2023年华为认证HCIA云计算题库(H13-511)
  18. word2vec中数学原理详解以及原理思考
  19. 计算机文化教育对学生思维品质的影响,信息技术教育让素质教育绽放“光芒”...
  20. auto.js实现淘宝快速提交订单

热门文章

  1. python commands用法_python之commands模块(执行Linux Shell命令)
  2. ip route配置静态路由_华为路由交换技术 | 静态路由配置
  3. python字符串补空格输出_python实现指定字符串补全空格、前面填充0的方法
  4. python函数和模块有什么关键特性_【Python函数与模块】(2)函数的特点
  5. 什么是数据库的三大范式?
  6. yii2 html form,YII2中ajax通过post提交form表单数据报400错误的解决方法
  7. 编译原理算符分析器实现 -* c语言代码,编译原理论文-词法分析器的设计与实现...
  8. 不是外部命令也不是可运行程序_手机运行内存4G和6G有什么不同?差别不是一般大...
  9. pygame.error: font not initialized的解决及init()到底干了什么
  10. Please review your Gradle project setup in the android/ folde