当前位置: 首页 > 知识库问答 >
问题:

docker部署多个项目的方案应该怎么选择?

丁安宜
2024-06-04

如果我有多个项目需要使用docker部署,每个项目都需要使用nginx静态服务,我是构建多个镜像且每个镜像都打包一个nginx吗?还是说我只需要构建一个nginx镜像,然后将多个项目的文件挂载到nginx的目录下,这样就可以实现多个项目共用一个nginx服务了?

这两个方案我都试过,方案一构建出的镜像每个都要安装nginx,感觉资源占用可多,第二个方案,我每次部署和更新项目的时候,都要重新挂载和配置nginx配置项感觉也可麻烦.请问如果在真是项目中应该怎么做相对来说比较好

共有2个答案

单勇
2024-06-04

情况1:如果服务器资源真的非常非常紧张,也没有高可用要求,项目也非常多,那就挂目录。
情况2:如果要高可用,要做版本管理,要考虑多环境测试、版本回退、多节点部署等情况,每个项目用nginx镜像做无状态容器更方便。

至于资源占用可以改下nginx配置,默认的一个进程大概占用15M左右内存,对于带来的便利,这个资源占用应该也能接受。

宇文梓
2024-06-04

在真实项目中,选择Docker部署多个项目的方案需要根据项目的需求、规模、复杂性以及维护的便捷性进行权衡。针对你提到的情况,以下是两种方案的优缺点以及推荐的做法:

方案一:每个项目构建包含Nginx的镜像

优点

  • 每个项目的环境都是独立的,隔离性好。
  • 可以为每个项目定制化Nginx配置。
  • 项目间的依赖关系清晰,互不干扰。

缺点

  • 每个镜像都包含Nginx,可能会导致资源占用较多,特别是当项目数量很多时。
  • 更新或维护Nginx时,需要更新所有项目的镜像。

方案二:使用单独的Nginx镜像,挂载多个项目的文件

优点

  • 只需要维护一个Nginx镜像,资源占用相对较低。
  • 可以方便地通过挂载不同目录来部署多个项目。

缺点

  • 项目间的文件挂载和Nginx配置管理可能变得复杂。
  • 如果多个项目需要不同的Nginx配置,管理起来会比较麻烦。

推荐做法

基于Docker Compose的部署方案

使用Docker Compose来管理多个项目的部署和配置。你可以为每个项目创建一个包含应用服务的镜像,并创建一个单独的Nginx服务镜像。通过Docker Compose的配置文件,你可以定义这些服务之间的依赖关系和配置。

示例Docker Compose文件

version: '3'services:  project1:    build: ./project1    ports:      - "8080:80"  project2:    build: ./project2    ports:      - "8081:80"  nginx:    image: nginx:latest    ports:      - "80:80"    volumes:      - ./nginx.conf:/etc/nginx/nginx.conf      - ./project1/static:/var/www/html/project1      - ./project2/static:/var/www/html/project2    depends_on:      - project1      - project2

在这个示例中,project1project2是你的应用服务,它们分别构建自己的镜像。Nginx服务使用官方的Nginx镜像,并通过挂载配置文件和静态文件来提供服务。depends_on确保Nginx服务在应用服务启动后再启动。

这种方案的优点是:

  • 应用的隔离性好,每个项目都有自己的服务。
  • Nginx配置和静态文件的管理相对集中,便于维护。
  • 通过Docker Compose可以轻松地启动、停止和更新服务。

你可以根据项目的实际需求对Docker Compose文件进行进一步的定制和优化。

 类似资料:
  • 本文向大家介绍Docker镜像+nginx 部署 vue 项目的方法,包括了Docker镜像+nginx 部署 vue 项目的方法的使用技巧和注意事项,需要的朋友参考一下 一、打包vue项目   在开发完的vue项目输入如下命名,打包生成dist文件夹   此时根目录会多出一个文件夹:dist文件夹,里面就是我们要发布的东西。   如果将该dist目录整个传到服务器上,部署成静态资源站点就能直接访

  • 本文向大家介绍Docker部署web项目的实现,包括了Docker部署web项目的实现的使用技巧和注意事项,需要的朋友参考一下 上一篇已经安装好docker服务,下面继续介绍如何部署web项目 一:随便创建目录dock,准备好如下文件: 二、编写Dockerfile,通过它能快速地构建docker镜像 新增如下配置 解释: (1)FROM centos 表示从docker官方仓库中获取centos

  • 问题内容: 我正在寻找可以管理多个相互依赖的Java Web应用程序部署的解决方案(最好是开源的)。 该解决方案需要具有创建和存储包含多个要发布项目的发布规范的能力-每个应用程序的特定版本以及相关的其他工件(数据库配置,apache配置等)。 然后需要解析该规范,然后需要在目标环境上部署/执行每个项目。目标环境基于linux。Web应用程序是在j2ee标准应用程序服务器上运行的香草战争。 有很多要

  • 本文向大家介绍centos6使用docker部署kafka项目的方法分析,包括了centos6使用docker部署kafka项目的方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了centos6使用docker部署kafka项目的方法。分享给大家供大家参考,具体如下: 目录结构: /kafka     /Dockerfile     /start.sh     /Readme    

  • 2. 项目部署 本章主要介绍如何部署Camel。 首先,介绍Vagrant这个虚拟机工具。借助Vagrant,我们可以保证本地开发及测试环境与线上环境的一致。 随后介绍slb-admin的部署。管理端本地也要安装Dengine,用以测试Nginx配置文件的语法是否正确。此外,还需要部署数据库:MySQL及MongoDB。 最后介绍Nginx服务器的部署。我们可以根据具体需求部署Nginx集群,每台

  • 描述 本文档提供了 3 种部署方式,对应 Jboot 里的 3 种打包方式。 通过 脚本 运行 在 打包方式 文档中,我们可以把项目打包成一个 .zip 的压缩包项目,里面带有 jboot.sh (和 jboot.bat) 执行脚本, 只需要我们解压 .zip 压缩文件,通过如下命令就可以对 jboot 项目进行启动和停止。 # 启动 ./jboot.sh start # 停止 ./jboot.

  • 部署中,你可以先构建打包生成环境代码,再启动服务。因此,构建和启动分为下面两条命令: next build next start 例如,使用now去部署package.json配置文件如下: { "name": "my-app", "dependencies": { "next": "latest" }, "scripts": { "dev": "next",

  • 经过前文对Docker Compose的讲解,我们以Spring Cloud章节的几个示例项目为例,讲解如何使用Docker Compose部署项目: 准备工作 使用到的示例项目有: 项目名称 作用 microservice-api-gateway API Gateway microservice-consumer-movie-ribbon-with-hystrix 服务消费者 microserv