【问题标题】:Spring Boot Plugins With A Database Docker Image带有数据库 Docker 映像的 Spring Boot 插件
【发布时间】:2020-08-05 22:17:46
【问题描述】:

我使用 2.3 上的新 Spring Boot 插件来构建简单 Spring Boot 应用程序的 Docker 映像,如 spring.io 上的 the Docker guide 所述。

$ ./mvnw spring-boot:build-image

并使用 jib 让应用程序在 Kubernetes 上运行。应用程序此时不使用数据库。

现在,我需要在应用程序中使用数据库。该命令产生我需要添加到基于内存的数据库或使用数据库配置设置的配置文件。我不想使用像 H2 这样的基于内存的数据库,而是使用 PostgreSQL。

插件如何获取数据库的 Docker 镜像,这样数据库只能被应用程序使用,其他人不能使用?

【问题讨论】:

    标签: spring-boot


    【解决方案1】:

    如果你需要运行 Postgresql 数据库,你可以运行 Docker 命令来获取并运行它

    docker run -p 5432:5432 -e POSTGRES_PASSWORD=mysecretpassword -d postgres

    这将从 DockerHub 下载最新的可用版本并在您的本地开发环境中运行。

    然后您可以使用暴露的端口 (5432) 从 SpringBoot 进行连接

    spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
    spring.datasource.username=postgres
    spring.datasource.password=mysecretpassword
    spring.datasource.driver-class-name=org.postgresql.Driver
    

    `

    【讨论】:

    • 感谢您的信息。那会奏效的。我没有在帖子中明确说明我的指示。我需要的是只为应用程序提供一个数据库。我将拥有多个应用程序,它们将分别使用相同类型的数据库。所以,我想知道我是否可以在应用程序 Docker 映像中放置一个数据库。
    • 这种情况我需要使用 Docker compose。
    • 您不必这样做,但我同意它简化了,因为您可以在一个文件中控制所有容器(和网络)。我建议的方法改为运行 2 次 docker 运行以达到相同的效果。
    • 我实际上无法使用 DB docker 映像为我的应用程序 docker 映像工作。我运行“docker run -p 5432:5432 -e POSTGRES_PASSWORD=postgres -d postgres”并运行“psql -h localhost -p 5432 -U postgres -W”来访问数据库控制台。在我的应用程序中使用与您类似的数据库配置(我使用反应式 DBC,因此 spring.r2dbc.url=r2dbc:postgresql://localhost:5432/postgres 略有不同)。尽管用户名和密码设置正确,但我得到“拒绝连接到 localhost:5432”。我可能会在某些事情上犯错。
    • 感谢您的信息。这是从应用程序连接数据库的一种方法。我以前没见过这种方法。
    猜你喜欢
    • 2019-01-02
    • 2020-05-17
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 2017-02-20
    • 2015-06-20
    相关资源
    最近更新 更多