From 518643c7afdeccda5c27079078d335e72d71312c Mon Sep 17 00:00:00 2001 From: Sofiia Churikova Date: Fri, 2 May 2025 00:20:46 +0300 Subject: [PATCH] add docker files --- .env | 3 ++ Dockerfile | 7 ++++ Dockerfile.multi | 12 ++++++ docker-compose.yml | 38 +++++++++++-------- .../resources/application-mysql.properties | 2 +- 5 files changed, 45 insertions(+), 17 deletions(-) create mode 100644 .env create mode 100644 Dockerfile create mode 100644 Dockerfile.multi diff --git a/.env b/.env new file mode 100644 index 000000000..f4ea2e864 --- /dev/null +++ b/.env @@ -0,0 +1,3 @@ +DB_USERNAME=petclinic +DB_PASSWORD=petclinic +DB_ROOT_PASSWORD=root_petclinic diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..fa6be0da3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,7 @@ +FROM eclipse-temurin:21-jdk-jammy + +WORKDIR /app + +COPY target/spring-petclinic-*.jar /app/spring-petclinic.jar + +CMD ["java", "-jar", "spring-petclinic.jar"] \ No newline at end of file diff --git a/Dockerfile.multi b/Dockerfile.multi new file mode 100644 index 000000000..4eba2b2f6 --- /dev/null +++ b/Dockerfile.multi @@ -0,0 +1,12 @@ +FROM eclipse-temurin:21-jdk-jammy as build +WORKDIR /app +COPY .mvn/ .mvn +COPY mvnw pom.xml ./ +RUN ./mvnw dependency:resolve +COPY src ./src +RUN ./mvnw package + +FROM eclipse-temurin:21-jre-alpine +COPY --from=build /app/target/spring-petclinic-*.jar /spring-petclinic.jar +EXPOSE 8080 +CMD ["java", "-jar", "spring-petclinic.jar"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 47579bbaf..429c1037f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,21 +1,27 @@ +version: "3" + services: - mysql: - image: mysql:9.1 + petclinic: + build: + context: . + dockerfile: Dockerfile.multi ports: - - "3306:3306" + - 8080:8080 + environment: + - MYSQL_URL=jdbc:mysql://mysqlserver/petclinic + - SERVER_PORT=8080 + depends_on: + - mysqlserver + mysqlserver: + image: mysql:8.0 + ports: + - 3306:3306 environment: - - MYSQL_ROOT_PASSWORD= - - MYSQL_ALLOW_EMPTY_PASSWORD=true - - MYSQL_USER=petclinic - - MYSQL_PASSWORD=petclinic - MYSQL_DATABASE=petclinic + - MYSQL_USER=${DB_USERNAME} + - MYSQL_PASSWORD=${DB_PASSWORD} + - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD} volumes: - - "./conf.d:/etc/mysql/conf.d:ro" - postgres: - image: postgres:17.0 - ports: - - "5432:5432" - environment: - - POSTGRES_PASSWORD=petclinic - - POSTGRES_USER=petclinic - - POSTGRES_DB=petclinic + - mysql_data:/var/lib/mysql +volumes: + mysql_data: \ No newline at end of file diff --git a/src/main/resources/application-mysql.properties b/src/main/resources/application-mysql.properties index e23dfa605..d0efd22f6 100644 --- a/src/main/resources/application-mysql.properties +++ b/src/main/resources/application-mysql.properties @@ -4,4 +4,4 @@ spring.datasource.url=${MYSQL_URL:jdbc:mysql://localhost/petclinic} spring.datasource.username=${MYSQL_USER:petclinic} spring.datasource.password=${MYSQL_PASS:petclinic} # SQL is written to be idempotent so this is safe -spring.sql.init.mode=always +spring.sql.init.mode=always \ No newline at end of file