Files
spring-boot/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/docker-compose.adoc
Moritz Halbritter 64cf3b0712 Document how to share services with Docker Compose
Closes gh-37886
2023-10-19 10:05:14 +02:00

39 lines
1.7 KiB
Plaintext

[[howto.docker-compose]]
== Docker Compose
This section includes topics relating to the Docker Compose support in Spring Boot.
[[howto.docker-compose.jdbc-url]]
=== Customizing the JDBC URL
When using `JdbcConnectionDetails` with Docker Compose, the parameters of the JDBC URL
can be customized by applying the `org.springframework.boot.jdbc.parameters` label to the
service. For example:
[source,yaml,indent=0]
----
services:
postgres:
image: 'postgres:15.3'
environment:
- 'POSTGRES_USER=myuser'
- 'POSTGRES_PASSWORD=secret'
- 'POSTGRES_DB=mydb'
ports:
- '5432:5432'
labels:
org.springframework.boot.jdbc.parameters: 'ssl=true&sslmode=require'
----
With this Docker Compose file in place, the JDBC URL used is `jdbc:postgresql://127.0.0.1:5432/mydb?ssl=true&sslmode=require`.
[[howto.docker-compose.sharing-services]]
=== Sharing services between multiple applications
If you want to share services between multiple applications, create the `compose.yaml` file in one of the applications and then use the configuration property configprop:spring.docker.compose.file[] in the other applications to reference the `compose.yaml` file.
You should also set configprop:spring.docker.compose.lifecycle-management[] to `start-only`, as it defaults to `start-and-stop` and stopping one application would shut down the shared services for the other still running applications, too.
Setting it to `start-only` won't stop the shared services on application stop, but a caveat is that if you shut down all applications, the services stay running.
You can stop the services manually by running `docker compose stop` on the commandline in the directory which contains the `compose.yaml` file.