Hello Lemmy,
I have to grade student work. Students who have made their first springboot applications. I’m wary for idiots who don’t understand anything about java, yet somehow manage to include code that wipes my entire User folder, so I run the projects in docker these days.
One criterium is that they include a upload/download functionality. Some students decide to do that by storing the files in the DB, other store it in an “uploads” folder.
The first one works fine in docker. The second one not so much. The java code refers to a path “sourceroot/uploads”, but that doesn’t exist in the docker container. How can I make it exist in the docker container?
This is the DOCKERFILE I use to docker build -t image .
FROM eclipse-temurin:17-jdk-alpine
VOLUME /tmp
EXPOSE 8080
EXPOSE 5432
COPY target/*.jar application.jar
ENTRYPOINT ["java", "-jar", "application.jar"]
This is the yaml I use to run docker compose up -d
version: '2'
services:
app:
image: 'image'
ports:
- "8080:8080"
container_name: app
depends_on:
db:
condition: service_healthy
environment:
- SERVER.PORT=8080
- SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/testing
- SPRING_DATASOURCE_USERNAME=postgres
- SPRING_DATASOURCE_PASSWORD=postgres
- SPRING_JPA_HIBERNATE_DDL_AUTO=create-drop
db:
image: 'postgres:13.1-alpine'
ports:
- "5432:5432"
expose:
- "5432"
container_name: db
environment:
- POSTGRES_USER=postgres
- POSTGRES_HOST_AUTH_METHOD=trust
- POSTGRES_DB=testing
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
networks:
default:
name: docker
I’m sorry if this code offends anybody. I’ve made this Frankenstein’s monster myself from bits and pieces. However, I can’t seem to figure out how to add a working “uploads folder” to it that could be used by the springboot application inside the container. Any help would be appreciated.
It has been some time I meddled with Java but could it be possible that “sourceroot/uploads” points to a path in the project folder before compilation? So this may be a problem with your students code and not your docker setup.
Alternatively try
RUN mkdir -p sourceroot/uploads
in your Dockerfile to create the directory in question. Don’t know if this solves you problem since I don’t know what the Java code does.