From fd260c40666293632e175fc431b6e48220f66ac7 Mon Sep 17 00:00:00 2001 From: Alexandre Chevalier Date: Wed, 11 Feb 2026 12:43:57 +0100 Subject: [PATCH] dockefile back --- dockercompose/docker-compose.yml | 14 +++++++--- dockerfiles/back/DockerFile | 0 dockerfiles/back/Dockerfile | 18 +++++++++++++ dockerfiles/back/Dockerfile2 | 31 +++++++++++++++++++++++ dockerfiles/back/DockerfileUsingApiNative | 30 ++++++++++++++++++++++ 5 files changed, 89 insertions(+), 4 deletions(-) delete mode 100644 dockerfiles/back/DockerFile create mode 100644 dockerfiles/back/Dockerfile create mode 100644 dockerfiles/back/Dockerfile2 create mode 100644 dockerfiles/back/DockerfileUsingApiNative diff --git a/dockercompose/docker-compose.yml b/dockercompose/docker-compose.yml index cc1cc72..febea7d 100644 --- a/dockercompose/docker-compose.yml +++ b/dockercompose/docker-compose.yml @@ -14,7 +14,7 @@ services: front: build: context: .. - dockerfile: dockerfiles/front/DockerFile + dockerfile: dockerfiles/front/Dockerfile ports: - "5000:5000" @@ -28,15 +28,16 @@ services: back: build: context: .. - dockerfile: dockerfiles/back/DockerFile + dockerfile: dockerfiles/back/DockerfileUsingApiNative ports: - - "8000:8000" + - "8080:8080" volumes: - ../doodlestudent/api:/app environment: - FLASK_ENV=development depends_on: - - db + db: + condition: service_healthy networks: - app-network @@ -49,6 +50,11 @@ services: - MYSQL_DATABASE=tlc - MYSQL_USER=tlc - MYSQL_PASSWORD=tlc + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-proot"] + interval: 5s + timeout: 5s + retries: 10 networks: - app-network diff --git a/dockerfiles/back/DockerFile b/dockerfiles/back/DockerFile deleted file mode 100644 index e69de29..0000000 diff --git a/dockerfiles/back/Dockerfile b/dockerfiles/back/Dockerfile new file mode 100644 index 0000000..f6bee8c --- /dev/null +++ b/dockerfiles/back/Dockerfile @@ -0,0 +1,18 @@ +FROM alpine:3.23 + +RUN apk --no-cache add curl bash + +# java 17 car c'est la version utilise dans maven (voir pom.xml) +RUN apk --no-cache add openjdk17-jdk maven + +COPY doodlestudent/api /app + +RUN mvn install -Dpackaging=jar +RUN mvn package -DskipTests + +RUN ls -l target + +# Quarkus semble utilise le port 8080 par defaut +EXPOSE 8080 + +ENTRYPOINT [ "java", "-jar", "/app/target/tlcdemoApp-1.0.0-SNAPSHOT.jar" ] diff --git a/dockerfiles/back/Dockerfile2 b/dockerfiles/back/Dockerfile2 new file mode 100644 index 0000000..fb91a87 --- /dev/null +++ b/dockerfiles/back/Dockerfile2 @@ -0,0 +1,31 @@ +FROM maven:3.9.6-eclipse-temurin-17 AS build + +WORKDIR /app + +# Copy only pom.xml first (better layer caching) +COPY doodlestudent/api/pom.xml . + +# Download dependencies +RUN mvn dependency:go-offline + +# Copy the rest of the source code +COPY doodlestudent/api/src ./src + +# Build the application +RUN mvn package -DskipTests + +# --------------------------- +# Stage 2 - Runtime +# --------------------------- +FROM eclipse-temurin:17-jre-alpine + +WORKDIR /app + +# Copy the built application from the build stage +COPY --from=build /app/target/quarkus-app/ ./quarkus-app/ + +# Quarkus default port +EXPOSE 8080 + +# Run the application +ENTRYPOINT ["java", "-jar", "quarkus-app/quarkus-run.jar"] \ No newline at end of file diff --git a/dockerfiles/back/DockerfileUsingApiNative b/dockerfiles/back/DockerfileUsingApiNative new file mode 100644 index 0000000..9b0a4f3 --- /dev/null +++ b/dockerfiles/back/DockerfileUsingApiNative @@ -0,0 +1,30 @@ +FROM alpine:3.23 AS builder + +RUN apk --no-cache add maven docker-cli + +COPY doodlestudent/api /app + +WORKDIR /app + +RUN mvn package -Pnative -Dquarkus.native.container-build=true +RUN ls -l target + +FROM registry.access.redhat.com/ubi8/ubi-minimal:8.8 + +WORKDIR /work/ + +RUN chown 1001 /work \ + && chmod "g+rwX" /work \ + && chown 1001:root /work + +COPY --from=builder --chown=1001:root /app/target/*-runner /work/application + +EXPOSE 8080 +USER 1001 + +ENV quarkus_datasource_jdbc_url "jdbc:mysql://db:3306/tlc?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&createDatabaseIfNotExist=true&serverTimezone=Europe/Paris" +ENV quarkus_datasource_username tlc +ENV quarkus_datasource_password tlc +ENV QUARKUS_HIBERNATE_ORM_DATABASE_GENERATION update + +CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]