当前位置: 首页 > 后端技术 > Node.js

工作笔记总结2

时间:2023-04-04 00:00:36 Node.js

1、如何通过git部署docker容器拉取实时快速迭代部署需求。希望每次docker项目更新的时候,镜像不要一遍又一遍的构建。2、项目更新后,使用scp将dist打包文件传输到volume,或者gitpull3,dockercommit新建一个镜像,然后重启镜像。实际难点:1.我第一次通过dockerfile创建镜像的时候,想通过run命令Map一个文件夹到container文件夹(我把新建的xt_cool文件夹映射到WORKDIR/app),但是发现报错,意思是package.json无法打开。报错如下:2.看不懂dockerfile镜像构建的真正原理。CMD["npm","run","docker"]命令是不是每次运行docker镜像都会执行?还是在构建镜像的时候已经执行了?我的猜测是前者。解决问题的过程:1.上面问题1中的情况,我原来的理解是执行dockerrun-itd--net=host--namext_cool-v~/xt_cool:/appa105950987/xt_cool:v0for第一次。2、通常情况下,如果宿主机上的xt_cool文件为空,镜像中的/app文件会第一次映射到它上面。按道理,上面的找不到/app/package.json的错误应该不会报。但是仔细看这个报错,好像是容器中npm执行package.json的路径变成了/app/package.json,但是WORKDIR/app当前的工作路径是/app,所以npm执行报错是报道!可能跟这条命令有关!建立卷连接后,容器中的文件夹和主机上映射的文件夹将相互同步。然后我先在xt_cool文件夹下用git拉代码,为了解决权限带来的错误干扰,我直接递归设置所有文件的权限为777,chmod-R777./当前文件下的所有子文件递归地,切勿在根目录等中使用此命令。成功后,我的理解是,这次host的文件是第一次active,直接覆盖了容器中/app文件下的所有文件。执行dockerrun-itd--net=host--namext_cool-v~/xt_cool/admin-backend:/appa105950987/xt_cool:v0.2进入容器,发现是的,覆盖了!但是容器启动失败!因为宿主机中的admin-backend没有安装npm依赖,所以covered容器中的/app文件夹下没有依赖。我需要到外面安装npm依赖项。先全局安装sudoaptinstallnodejs,全局安装sudoaptinstallnpm。2、上面的问题2,在解决上面1问题的过程中,执行安装依赖后,服务无法正常启动。我认为从ts打包到js这一步还没有完成,然后查看CMD["npm","run","docker"]这个脚本命令并没有执行npmrunbuild,所以我判断CMD["npm","run","docker"]命令在每次运行docker镜像时执行。所以我们要手动npmrunbuild打包,然后重启容器。总结:1.dockerbuild...和之前一样正常构建镜像,因为我们会直接覆盖构建的WORKDIR/app中的内容,但是构建的镜像会为我们搭建一个node环境。1.dockerpull...拉取镜像。1.mkdir-p~/folder创建主机映射文件夹。2.gitclone...克隆代码并切换到你想要的分支3.chmod-R777./解决权限引起的错误干扰。我直接递归设置所有文件的权限为7774。npminstall--registry=https://registry.npm.taobao.org完成依赖安装。5、npmrunbuild完成ts到js的构建。6.dockerrun-itd--net=host--namext_cool-v~/hostmappingfolder/cloneprojectfile:/app-v~/xt_cool/logs:/root/logsa105950987/xt_cool:v0.2打开container(日志也要映射,方便查看)“/”为根目录,“~”为主目录。挂载linux存储,相当于一棵树,source为“/”,即根目录。而每个用户都有一个家目录,也就是用户的个人目录。例如root用户的家目录为/root,普通用户a的家目录为/home/a7。如果后面更新了代码,在host映射文件夹dist文件中删除,然后gitpull拉取代码,然后执行npmrunbuild打包,然后dockerrestart容器id重启容器