docker部署前端和后端打包程序

docker部署前端和后端打包程序,第1张

docker启动命令:

nginx.conf修手乎改为:

程序更新:每次只需要把前端vue打包程序更新到/data2/geovis/docker_nginx/弊判nginx_share_dir下即可。

Dockerfile文件内容:

start.sh内租薯改容(最后一个jar包不能后台运行,否则容器会自动退出):

构建docker镜像

启动geovis-jar容器:

程序更新:每次只需要docker restart geovis-jar重启容器即可。

更新jar包,然后重启容器。

使用docker部署Javaweb项目时,需要制作jar包,上传jar包,制作新镜像,停止容器,.启动新的容器,这样的更新方式步骤是比较繁琐而且很浪拍培费时间,一般只需要更新jar包然后进行重启容器就可以了。

docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后滚消发布到任何流行的Linux或Windows *** 作系统的机器上,也可以实现虚拟袭备唯化。

就是在Docker容器中再次运行一个Docker服务.

在一个乎拿容器中 *** 作Docker在CI工具中是很常见的, 如构建一个Docker镜像.

但由于在容器中运行一个Docker服务会有各种问题, 如镜像文件存储, 嵌套的容器也并不容易维护, 后来便衍生出了另一种更实用的方案: 挂载主机上Docker服务的sock

这样将不会遇到嵌套副作用,并且将在多个调用之间共享构建缓存。

ps: 更多知识请阅读 docker 官方提及的这篇文章: do-not-use-docker-in-docker-for-ci

我接下来要写的也是如何使用它, 并记录我的使用场景.

我有一个需求是这样的:

当某个镜返顷尘像更新之后, 通知docker重新pull并部署. 简单的来说就是当容器更新, 就自动运行

以实现更新部署.

由于自己编写的程序也运行在Docker中, 而不是宿主机, 所有没办法直接执行以上命令, 这就需要Docker In Docker了.

简单来说 你只需要这样:

然后 docker ps 就能看到 宿主机上 的所有容器.

如我的就是

当然 这里的stack.yaml文件需要在构建这个容器时添加进来 或者 挂载进来, 这肯定难不倒你.

如果你要将这段CMD在你的程序中运行也十分简单:

写好程序之后你可以使用这个Dockfile构建你的镜像

而运行这个镜像的stack.yaml文件需要配置挂载

你会看到我又挂载了.docker文件夹, 这个无关紧要, 在后面的疑难杂症会说漏禅到这个问题.

此参数是17.9版本之后新加的, 用于解决deploy不pull最新的镜像的问题. 详情看这个ISSUE:

force docker deploy to pull new images

私有仓库必须登录才有访问权限, 所以需要在宿主机上先login, 登录成功后会发现在 ~/.docker有新生成的 配置文件

, 其中存储了认证所需要的信息. 但在Docker容器中拿不到这个信息所以就会报错.

解决办法是将配置文件挂载进容器

问题描述:

网络结构如下:

客户端 ->服务器上的Nginx容器 (反代)->应用程序

在Nginx中配置了

在应用程序中得到"HTTP_X_FORWARDED_FOR"头 却是10.255.0.2, 而不是客户端真正的ip.

解决办法:

google : docker 10.255.0.2

得到的信息挺多的, 大多数是Docker3年4年都没有close的ISSUE....

当前可用的解决办法有


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12318228.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存