diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..ecee6af98 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +# FROM openjdk:17-jdk-alpine +# WORKDIR /app +# COPY target/spring-petclinic*.jar app.jar +# ENTRYPOINT ["java", "-jar", "app.jar"] + +FROM maven:3.8.3-openjdk-17-slim AS builder +WORKDIR /app +COPY . . +RUN mvn package -DskipTests + + +FROM gcr.io/distroless/java17 +COPY --from=builder /app/target/spring-petclinic*.jar /app/app.jar +CMD ["app.jar"] diff --git a/docker-compose.yml b/docker-compose.yml index 8fdaacbc6..e61f0140f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,25 +1,56 @@ +# services: +# mysql: +# image: mysql:9.1 +# ports: +# - "3306:3306" +# environment: +# - MYSQL_ROOT_PASSWORD= +# - MYSQL_ALLOW_EMPTY_PASSWORD=true +# - MYSQL_USER=petclinic +# - MYSQL_PASSWORD=petclinic +# - MYSQL_DATABASE=petclinic +# volumes: +# - "./conf.d:/etc/mysql/conf.d:ro" +# profiles: +# - mysql +# postgres: +# image: postgres:17.0 +# ports: +# - "5432:5432" +# environment: +# - POSTGRES_PASSWORD=petclinic +# - POSTGRES_USER=petclinic +# - POSTGRES_DB=petclinic +# profiles: +# - postgres + +version: '3.8' + services: - mysql: - image: mysql:9.1 - ports: - - "3306:3306" + db: + image: postgres:13 + container_name: spring-petclinic-db environment: - - MYSQL_ROOT_PASSWORD= - - MYSQL_ALLOW_EMPTY_PASSWORD=true - - MYSQL_USER=petclinic - - MYSQL_PASSWORD=petclinic - - MYSQL_DATABASE=petclinic + POSTGRES_USER: petclinic + POSTGRES_PASSWORD: petclinic + POSTGRES_DB: petclinic + ports: + - "15432:5432" volumes: - - "./conf.d:/etc/mysql/conf.d:ro" - profiles: - - mysql - postgres: - image: postgres:17.0 - ports: - - "5432:5432" + - db-data:/var/lib/postgresql/data + + app: + image: spring-petclinic:multistage environment: - - POSTGRES_PASSWORD=petclinic - - POSTGRES_USER=petclinic - - POSTGRES_DB=petclinic - profiles: - - postgres + SPRING_PROFILES_ACTIVE: postgres + SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/petclinic + SPRING_DATASOURCE_USERNAME: petclinic + SPRING_DATASOURCE_PASSWORD: petclinic + ports: + - "8080:8080" + depends_on: + - db + +volumes: + db-data: + diff --git a/dockerfile-multistage b/dockerfile-multistage new file mode 100644 index 000000000..c279ccfcb --- /dev/null +++ b/dockerfile-multistage @@ -0,0 +1,9 @@ +FROM maven:3.8.3-openjdk-17-slim AS builder +WORKDIR /app +COPY . . +RUN mvn package -DskipTests + + +FROM gcr.io/distroless/java17 +COPY --from=builder /app/target/spring-petclinic*.jar /app/app.jar +CMD ["app.jar"]