diff --git a/.env.dist b/.env.dist new file mode 100644 index 0000000..82c0222 --- /dev/null +++ b/.env.dist @@ -0,0 +1,5 @@ +MYSQL_ROOT_PASSWORD= +MYSQL_DATABASE= +MYSQL_USER= +MYSQL_PASSWORD= +JWT_SECRET= \ No newline at end of file diff --git a/api/Dockerfile b/api/Dockerfile new file mode 100644 index 0000000..e63e870 --- /dev/null +++ b/api/Dockerfile @@ -0,0 +1,14 @@ +FROM openjdk:13-alpine + +ENV APPLICATION_USER ktor +RUN adduser -D -g '' $APPLICATION_USER + +RUN mkdir /app +RUN chown -R $APPLICATION_USER /app + +USER $APPLICATION_USER + +COPY ./target/api-0.0.1-jar-with-dependencies.jar /app/notes-api.jar +WORKDIR /app + +CMD ["java", "-server", "-XX:+UnlockExperimentalVMOptions", "-XX:InitialRAMFraction=2", "-XX:MinRAMFraction=2", "-XX:MaxRAMFraction=2", "-XX:+UseG1GC", "-XX:MaxGCPauseMillis=100", "-XX:+UseStringDeduplication", "-jar", "notes-api.jar"] \ No newline at end of file diff --git a/api/pom.xml b/api/pom.xml index e3e0a43..098b0a5 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -24,7 +24,7 @@ UTF-8 true 12 - io.ktor.server.netty.EngineMain + be.vandewalleh.NotesApplicationKt 13 ${java.version} ${java.version} @@ -150,11 +150,6 @@ HikariCP 3.4.2 - - com.sksamuel.hoplite - hoplite-core - ${hoplite_version} - com.sksamuel.hoplite hoplite-yaml diff --git a/api/resources/application.yaml b/api/resources/application.yaml index 388f21a..a3d011b 100644 --- a/api/resources/application.yaml +++ b/api/resources/application.yaml @@ -1,18 +1,18 @@ env: staging database: - host: 127.0.0.1 + host: ${MYSQL_HOST} port: 3306 - name: Notes - username: test - password: test + name: ${MYSQL_DATABASE} + username: ${MYSQL_USER} + password: ${MYSQL_PASSWORD} server: host: 0.0.0.0 port: 8081 jwt: - secret: ${random.string(25)} + secret: ${JWT_SECRET} auth: validity: 1 unit: HOURS diff --git a/api/src/NotesApplication.kt b/api/src/NotesApplication.kt index 65a3f58..ae7e54d 100644 --- a/api/src/NotesApplication.kt +++ b/api/src/NotesApplication.kt @@ -19,6 +19,7 @@ import org.kodein.di.generic.singleton import org.slf4j.Logger import org.slf4j.LoggerFactory import javax.sql.DataSource +import kotlin.system.exitProcess val kodein = Kodein { import(serviceModule) diff --git a/docker-compose.yml b/docker-compose.yml index 0f8a33a..6a21885 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,18 +1,35 @@ -version: '3' +version: '2.2' services: db: image: mariadb container_name: notes-mariadb + env_file: + - .env environment: - PUID=1000 - PGID=1000 - - MYSQL_ROOT_PASSWORD=test - TZ=Europe/Brussels - - MYSQL_DATABASE=Notes - - MYSQL_USER=test - - MYSQL_PASSWORD=test ports: + # This is only for testing - 3306:3306 + healthcheck: + test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"] + timeout: 20s + retries: 10 + + api: + build: ./api + container_name: notes-api + ports: + - 8081:8081 + env_file: + - .env + environment: + - TZ=Europe/Brussels + - MYSQL_HOST=db + depends_on: + db: + condition: service_healthy \ No newline at end of file