【问题标题】:Spring Boot microservice deployment in DockerDocker 中的 Spring Boot 微服务部署
【发布时间】:2018-06-17 03:21:43
【问题描述】:

我需要开发一个 Spring Boot 微服务,需要部署在 Docker 中。现在我开发了一个示例微服务。当我学习 Docker 和容器部署时,我发现了许多关于安装 Docker 和构建映像以及将应用程序作为容器打包运行的文档。这里我对部署过程有一些疑问:

  • 如果我需要在 Docker 中部署 4 个 Spring Boot 微服务,是否需要为所有人创建单独的镜像?或者我可以在我的所有 Spring Boot 微服务中使用相同的 Docker 文件吗?

  • 我正在使用 PostgreSQL 数据库。那么我可以将该连接包含到 Docker 映像文件中吗?还是我需要单独管理?

【问题讨论】:

标签: amazon-web-services docker microservices


【解决方案1】:
  • 如果您有四个不同的 Spring Boot 应用程序,我建议创建四个不同的 Dockerfile,并从这些文件构建四个不同的映像。基本上每个 Spring 应用文件夹中都放一个 Dockerfile。
  • 您可以通过在代码中编写 PostgreSQL 凭据(主机名、用户名和密码)将其构建到应用程序中。这是最简单的。

如果您使用 AWS 和 ECS(弹性容器服务)或 EC2 来运行您的 Docker 容器,您可以将凭证存储在 EC2 参数存储中,并让您的应用程序在启动时获取它们,但这需要更多的 AWS 知识和您必须使用 AWS 开发工具包从应用程序中获取凭证。这是一个关于这个的 StackOverflow 问题:Accessing AWS parameter store values with custom KMS key

【讨论】:

  • 好的,先生。谢谢您的答复。我有一台 Ec2 机器。我现在也在探索那个云部分。目前我只使用 Elastic Beanstalk 来部署我的示例服务它的工作。但我正在寻找容器服务来启动我的微服务。我更喜欢 Ec2 启动类型,而不是来自 AWS ECS 的 Fargate 启动。我只需要从我的 EC2 机器自定义启动。所以我需要从基地了解 docker。而且我的服务是spring cloud。我包括 Zuul、Eureka 和 hystrix。所以我有我的 4 服务 + spring cloud 工具项目。所以我对使用 dockers 完全感到困惑。
【解决方案2】:
  1. 可以为您的所有微服务提供一个图像,但这不是一个好的设计,不建议使用。始终尝试将事物彼此分离。在您的情况下,为每个微服务创建单独的图像(单独的 Dockerfile)。
  2. 第二个问题同样如此,也为您的数据库创建一个单独的映像(一个 Dockerfile)。对于凭证,您可以按照 Jonatan 的建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 2018-05-24
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 2019-10-03
    • 2019-10-23
    相关资源
    最近更新 更多