Added Docker support

This commit is contained in:
Marco Cetica 2024-01-15 12:01:16 +01:00
parent 37c1957082
commit c5f60ecc25
Signed by: marco
GPG Key ID: 45060A949E90D0FD
4 changed files with 78 additions and 6 deletions

34
Dockerfile Normal file
View File

@ -0,0 +1,34 @@
# BUILD STAGE
FROM amazoncorretto:21 as build
LABEL author="Marco Cetica"
# Prepare working environment
WORKDIR /workspace/app
COPY mvnw .
COPY .mvn .mvn
COPY pom.xml .
COPY src src
# Set environment variables for unit testing
ARG SERVER_PORT="3000"
ARG SPRING_DATASOURCE_URL="jdbc:h2:mem:testdb"
ARG SPRING_DATASOURCE_DRIVERCLASSNAME="org.h2.Driver"
ARG SPRING_DATASOURCE_USERNAME="sa"
ARG SPRING_DATASOURCE_PASSWORD="password"
# Build the jar file and execute the unit tests
RUN ./mvnw package
# RUN STAGE
FROM amazoncorretto:21 as run
# Configure working environment
VOLUME /tmp
ARG BUILD=/workspace/app/target
# Copy jar file
COPY --from=build ${BUILD}/*.jar app.jar
# Run the application
ENTRYPOINT ["java", "-jar", "app.jar"]

37
docker-compose.yml Normal file
View File

@ -0,0 +1,37 @@
version: "3.9"
networks:
bits:
external: false
services:
app:
build: .
container_name: "bits_app"
environment:
SERVER_PORT: 3000
SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/bits
SPRING_DATASOURCE_USERNAME: bitsuser
SPRING_DATASOURCE_PASSWORD: qwerty1234
SPRING_SECURITY_USER_NAME: admin
SPRING_SECURITY_USER_PASSWORD: admin
restart: always
ports:
- "3000:3000"
networks:
- bits
depends_on:
- db
db:
image: postgres:latest
container_name: "bits_db"
restart: always
environment:
- POSTGRES_USER=bitsuser
- POSTGRES_PASSWORD=qwerty1234
- POSTGRES_DB=bits
networks:
- bits
volumes:
- ./postgres:/var/lib/postgresql/data

View File

@ -10,7 +10,7 @@
</parent>
<groupId>com.ceticamarco</groupId>
<artifactId>bits</artifactId>
<version>0.0.1-SNAPSHOT</version>
<version>1.0.0</version>
<name>bits</name>
<description>Text storage platform</description>
<properties>

View File

@ -3,14 +3,15 @@ spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.properties.hibernate.format_sql=true
# Adjust these values in production
server.port=3000
#server.port=3000
#spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/bits
#spring.datasource.username=postgres
#spring.datasource.password=toor
#spring.security.user.name=admin
#spring.security.user.password=admin
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
# For unit tests only
#spring.datasource.url=jdbc:h2:mem:testdb
#spring.datasource.driverClassName=org.h2.Driver
#spring.datasource.username=sa
#spring.datasource.password=password