【问题标题】:How to connect dockerized spring boot app to dockerized postgres如何将 dockerized spring boot 应用程序连接到 dockerized postgres
【发布时间】:2019-11-06 14:33:51
【问题描述】:

我必须使用 Spring Boot 编写 3 个简单的微服务,并将它们 dockerize。自从我刚开始阅读有关 docker 的文章以来,我遇到了几个问题。

为了构建 docker 镜像,我使用了这个 maven 插件:

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.2.0</version>
    <configuration>
        <imageName>example</imageName>
        <baseImage>java</baseImage>
        <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
        <imageTags>
            <imageTag>latest</imageTag>
        </imageTags>
    </configuration>
</plugin>

要求

  • Docker 容器必须在没有 ROOT 用户权限的情况下运行。
  • 构建 maven 脚本应该构建 docker 容器。
  • 数据库也需要docker化(所有微服务使用一个数据库)

我的问题

我有测试服务 .jar 并且一切正常(它连接到 dockerized postgres)但是当我运行测试服务 .jar 的 docker 映像(使用 sudo mvn docker:build 构建)时,我无法连接到 postgres。

我发现数据源中的 localhost 可能是问题:

spring.datasource.url=jdbc:postgresql://localhost:5432/dockertest

但我不知道应该用什么代替 localhost。


如果有任何关于如何轻松创建和运行这些 docker 镜像(满足上述要求)的提示,我将不胜感激

【问题讨论】:

    标签: spring postgresql maven docker microservices


    【解决方案1】:

    Docker 不会看到你的本地主机。 您必须创建一个网络,并加入所有服务(请参阅docker network cli 命令) 然后使用应用程序的 docker 名称在网络中引用它(如果名称是 abc-service 则使用spring.datasource.url=jdbc:postgresql://abc-service/dockertest)。

    或者您可以使用 docker compose,它会自动为您的服务创建网络。

    示例 docker-compose.yml:

    version: '3' services: redis-server: image: 'redis' eureka-server: build: ./eureka-server ports: - "8010:8010" book-service: build: ./book-service build: ./writer-service

    然后在适当的服务的 application.yml 中像这样连接:

    redis: host: redis-server port: 6379

    【讨论】:

      猜你喜欢
      • 2017-12-29
      • 2019-03-15
      • 2020-12-31
      • 2019-12-24
      • 1970-01-01
      • 2020-11-18
      • 1970-01-01
      • 2020-05-17
      • 2022-06-19
      相关资源
      最近更新 更多