diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..7b4e28e --- /dev/null +++ b/.dockerignore @@ -0,0 +1,35 @@ +HELP.md +.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + + +.env diff --git a/Dockerfile.dev b/Dockerfile.dev new file mode 100644 index 0000000..220f6bc --- /dev/null +++ b/Dockerfile.dev @@ -0,0 +1,35 @@ +FROM eclipse-temurin:21-jdk-jammy + +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + curl \ + vim \ + git \ + ca-certificates \ + ffmpeg && \ + rm -rf /var/lib/apt/lists/* + +# Create non-root user +RUN groupadd --gid 1000 spring-app && \ + useradd --uid 1000 --gid spring-app --shell /bin/bash --create-home spring-app + +RUN mkdir -p /home/spring-app/.m2 && \ + chown -R spring-app:spring-app /home/spring-app/.m2 + +WORKDIR /app + +COPY mvnw . +COPY .mvn .mvn +COPY pom.xml . +COPY target target + +RUN chmod +x mvnw && \ + chown -R spring-app:spring-app /app + +USER spring-app:spring-app + +COPY src ./src + +EXPOSE 8080 + +ENTRYPOINT ["./mvnw", "spring-boot:run"] diff --git a/Dockerfile.prod b/Dockerfile.prod index 9a45fda..c48ab31 100644 --- a/Dockerfile.prod +++ b/Dockerfile.prod @@ -35,8 +35,7 @@ RUN groupadd --gid 1000 spring-app \ RUN apt-get update && \ apt-get install -y --no-install-recommends \ ca-certificates \ - ffmpeg && \ - rm -rf /var/lib/apt/lists/* + ffmpeg USER spring-app:spring-app WORKDIR /opt/workspace diff --git a/compose.yml b/compose.yml index 03059da..1601d38 100644 --- a/compose.yml +++ b/compose.yml @@ -5,13 +5,21 @@ services: - anyame-shared hls-proxy: - image: hls-proxy:latest + build: + context: . + dockerfile: Dockerfile.dev env_file: .env ports: - 8082:8080 networks: - anyame-shared - elk-network + volumes: + - .:/app + - maven-repo:/home/spring-app/.m2/ + +volumes: + maven-repo: networks: anyame-shared: diff --git a/pom.xml b/pom.xml index 6fa890c..d757a37 100644 --- a/pom.xml +++ b/pom.xml @@ -96,6 +96,11 @@ 0.8.0 + + org.springframework.boot + spring-boot-devtools + true + org.springframework.boot spring-boot-starter-test