-
Notifications
You must be signed in to change notification settings - Fork 16
Added Dockerfile and Docker-compose #12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| MYSQL_ROOT_PASSWORD=root | ||
| MYSQL_DATABASE=usersystem | ||
| MYSQL_USER=root | ||
| MYSQL_PASSWORD=root | ||
| SPRING_DATASOURCE_URL=jdbc:mysql://mysql-cont:3306/usersystem?useSSL=false&serverTimezone=UTC&createDatabaseIfNotExist=true&allowPublicKeyRetrieval=true | ||
| SPRING_DATASOURCE_USERNAME=root | ||
| SPRING_DATASOURCE_PASSWORD=root | ||
| SPRING_JPA_HIBERNATE_DDL_AUTO=update | ||
| SPRING_JPA_SHOW_SQL=true |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,37 @@ | ||
| #Dockerfile | ||
|
|
||
| #Adding required system | ||
| FROM maven:3.8.1-openjdk-17 AS build | ||
|
|
||
| # Set the working directory | ||
| WORKDIR /app | ||
|
|
||
| # Copy the pom.xml and install dependencies | ||
| COPY pom.xml /app/ | ||
| COPY src /app/src | ||
|
|
||
| #Run command | ||
| RUN mvn clean package -DskipTests | ||
|
|
||
| # contents of the target | ||
| RUN ls -l target/ | ||
|
|
||
| # Use OpenJDK for running the application | ||
| FROM openjdk:17-jdk-slim | ||
|
|
||
| # Set the working directory | ||
| WORKDIR /app | ||
|
|
||
| # Copy the built JAR file from the Maven build stage | ||
| COPY --from=build /app/target/rihal-0.0.1-SNAPSHOT.jar rihal-0.0.1-SNAPSHOT.jar | ||
| ENTRYPOINT ["sh", "-c","java", "-jar", "rihal-0.0.1-SNAPSHOT.jar"] | ||
|
Owner
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is there any benefit of running java through "sh" and not directly using ENTRYPOINT ["java", "-jar", "/app/your-application.jar"] ? |
||
|
|
||
| # Expose the application port | ||
| EXPOSE 8080 | ||
|
|
||
| #ENV | ||
| ENV SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3307/usersystem?useSSL=false&serverTimezone=UTC&createDatabaseIfNotExist=true&allowPublicKeyRetrieval=true | ||
|
Owner
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is there a need to hardcode these env variables, when they are also defined in the docker-compose.yaml ? |
||
| ENV SPRING_DATASOURCE_USERNAME=root | ||
| ENV SPRING_DATASOURCE_PASSWORD=root | ||
| ENV SPRING_JPA_HIBERNATE_DDL_AUTO=update | ||
| ENV SPRING_JPA_SHOW_SQL=true | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,42 @@ | ||
|
|
||
|
|
||
| services: | ||
| mysql: | ||
| image: mysql | ||
| container_name: mysql | ||
| environment: | ||
| MYSQL_ROOT_PASSWORD: root | ||
| MYSQL_DATABASE: usersystem | ||
| MYSQL_PASSWORD: root | ||
| MYSQL_TCP_PORT: 3307 | ||
| ports: | ||
| - "3307:3307" | ||
| volumes: | ||
| - mysql_data:/var/lib/mysql | ||
| networks: | ||
| - demo-network | ||
|
|
||
| userappag: | ||
| build: | ||
| context: . | ||
| dockerfile: Dockerfile.dockerfile | ||
| container_name: userinfoag | ||
| environment: | ||
| SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3307/usersystem?useSSL=false&serverTimezone=UTC&createDatabaseIfNotExist=true&allowPublicKeyRetrieval=true | ||
| SPRING_DATASOURCE_USERNAME: root | ||
| SPRING_DATASOURCE_PASSWORD: root | ||
|
Owner
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We should never push the password on GitHub. |
||
| SPRING_JPA_HIBERNATE_DDL_AUTO: update | ||
| SPRING_JPA_SHOW_SQL: "true" | ||
| ports: | ||
| - "8080:8080" | ||
| depends_on: | ||
| - mysql | ||
| networks: | ||
| - demo-network | ||
|
|
||
| restart: on-failure | ||
| networks: | ||
| demo-network: | ||
|
|
||
| volumes: | ||
| mysql_data: | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For review purposes it's fine, but we should never push the changes with a .env file. The reason is that, this .env is environment specific. On our PC there might be a MySQL server running locally with a different username and password.
Similarly, Another team member may spin up a container and point to a MySQL server running on cloud.