This guide shows how to package a
Spring Boot app using
Apache Derby and run it inside
Docker for lightweight deployment.
1. Add Dependencies
In
pom.xml
:
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
2. Configure Derby
In
application.properties
:
spring.datasource.url=jdbc:derby:/app/data/derbyDB;create=true
spring.datasource.driver-class-name=org.apache.derby.jdbc.EmbeddedDriver
spring.jpa.hibernate.ddl-auto=update
This stores Derby files in
/app/data/derbyDB
inside the container.
3. Create Dockerfile
In the project root:
FROM openjdk:17-jdk-slim
VOLUME /app/data
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
VOLUME /app/data
→ persists Derby data outside container lifecycle.
4. Build Docker Image
Package the JAR:
mvn clean package -DskipTests
Build Docker image:
docker build -t springboot-derby-app .
5. Run Container
Run app with Derby database:
docker run -d -p 8080:8080 -v derby_data:/app/data springboot-derby-app
-p 8080:8080
→ exposes API.
-v derby_data:/app/data
→ persists Derby data on host.
6. Test the API
Use curl to test:
curl http://localhost:8080/your-endpoint
The data will remain safe across container restarts thanks to the volume.
image quote pre code