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