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

  • 时间:
  • 浏览:1
  • 来源:uu快3开奖_uu快3娱乐_输钱

第一次构建太大生成tag为none的image,否则底下每次再次执行该命令就会跳出另有一有3个多的状况。某些某些每次构建了有一有3个多新的image后,都能否 清除调都能否 的image。

否则登录dockerHub,将定制好的镜像推送到dockerHub中。detectivehlh某些某些我dockerHub的用户名,mine是image的名字。

最初写两种 脚本,主要目的是为了方便。某些某些脚本中为了达到两种 目的做了某些调整。最终我达成了满足我需求的有一有3个多方便的部署脚本。

否则两种 办法 会给实际的生产环境带来某些不可控的问提。比如,脚本都能否 都能否 上传,机会涉及某些服务器的敏感信息。否则机会你不小心上传了,那你的服务器就至少裸奔了;再比如,你对你的代码都能否 要十分自信,没人经过测试的代码就直接部署,会带来某些风险。

这里是在开发本地,使用docker命令来打包,某些某些该脚本对docker有强依赖。build命令表示打包docker应用的,-t选项则制定了docker镜像的名字和tag,tag会默认为latest。

使用grep命令匹配到tag为none的image,awk是有一有3个多强大的文本分析工具,{print $3}表示打印出匹配到的每一行的第有一有3个多字段,也某些某些我docker的image id。机会是$0一段话表示当前整行的数据。

执行前端的打包命令,生成静态文件目录。

机会每次更改后dist中的内容肯定与然后 不同,其实两种 步显得全是没人必要。运行npm的打包命令也会自动清楚该目录。

而清除Dockerfile则是为了处里更新了Dockerfile,而这次却都能否 得到最新的配置。

通过ssh命令,登录远程服务器,否则执行参数中的脚本。

机会是此人 用的,那详细太大担心,想为什么会搞为什么会搞。否则机会是开放给所他们用的否则有一定的访问量,比如博客,没人对于某些用户来说,两种 办法 就不为什么会友好。

否则都能否 在项目中加在默认nginx配置文件。

FROM制定了该定制容器的基础镜像为nginx:latest;COPY命里将打包好的静态文件目录克隆qq到容器内的/usr/share/nginx/html/目录下,否则将nginx的配置写入容器中对应的位置; EXPOSE则是设置对外暴露容器的30端口。

从底下步骤来看,亲们还都能否 有一有3个多服务器端的部署脚本。亲们机会会说,标题全是说有一有3个多脚本拿出吗?em。。。服务器有一有3个多,本地有一有3个多...简称只需有一有3个多脚本。

加在在然后 两种 就想引入docker,某些某些就打算利用docker容器来部署这次的前端应用。

某些某些我的观点是,分状况来。目前来说我的项目都能否 太大 少数几此人 在用,也还在指在迭代阶段。否则代码仓库是私有的,某些某些我详细太大担心隐私的问提。服务未经测试就直接上线对于我来说,其实问提某些某些我大。首先我会在本地测试,确认无误后才会执行部署操作。某些某些在不同的阶段,找到最适合此人 的方案就OK。

某些某些在这里做有一有3个多判断,第有一有3个多if判断机会指在名字为传入参数的container正在运行,就停止当前容器再重新启动。机会不指在则直接启动容器。

前段时间,此人 搞了个阿里云的服务器。想此人 在底下折腾,否则你都能否机会此人 瞎折腾而污染了现有的环境。毕竟,现在的阿里云机会没人免费的快照服务了。要想还原一段话,最简单的办法 某些某些我重新装系统。而一旦重装,然后 的搭建的所有环境就都白搭了。

看完标题进来的兄dei,机会某些某些我想打包有一有3个多docker镜像,没人你只都能否 Dockerfile文件和docker build命令就OK了。

在打包然后 ,首先都能否 有一有3个多可正常运行的前端应用。两种 都能否 使用umi机会create-react-app来构建。

它的方便体现在,当我完成了项目代码的更新,只都能否 跑一下两种 脚本,否则听候一会儿,项目就会自动打包成docker image,否则自动的在我的服务器上运行该container。

在本地的构建脚本中,亲们传入了docker运行的container的名字。在服务器构建脚本中都能否 来接收它。否则更新然后 推送的docker image。

xargs是有一有3个多给某些命令(也某些某些我底下的docker rmi)传递参数的有一有3个多过滤器,将标准输入转加在命令行参数。

run命令就不太大解释了。-d表示后台运行容器并返回容器ID,--name表示设置容器的名字,-p表示设置端口,将阿里云服务器的300端口映射到容器的30端口,最后一句表示要启动哪个image(好像还是解释了一遍)。

在项目中的详细构建脚本如下。

总结来说,上述命令某些某些我找到tag为none的image的ID,否则使用docker rmi命令移除该image。

最后一句某些某些我移除多次更新后跳出的tag为none的无用镜像。详细的脚本如下。

deploy.sh是放进服务端的构建脚本。放进默认的登录用户下。亲们发现,底下还跟了个mine,这是在服务器上运行的docker镜像的名字。这里暂时没人对container的名字加在hash,机会此人 的小项目,暂时没人必要。

在启动container时亲们会面对两种 状况,名字为传入参数的container机会在运行了。而在此时机会再次运行docker run命令就会报错而原困亲们无法使用最新的container,也无法达到更新应用的目的。