Skip to content

Commit caac557

Browse files
Feature/bot docker image (#21)
* initial docker file * adjust docker compose and create template config * added kubernetes setup * gamejam bot wait for database * Added a Persistent volume claim for the database Co-authored-by: Florian Fülling <[email protected]>
1 parent 42de7cf commit caac557

File tree

8 files changed

+182
-0
lines changed

8 files changed

+182
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,4 @@ buildNumber.properties
3737
/out/
3838
*.db
3939
*.sqlite
40+
/conf/dev/config.json

conf/dev/temp.config.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"baseSettings" : {
3+
"token" : "",
4+
"botOwner" : [ ]
5+
},
6+
"database" : {
7+
"host" : "database",
8+
"port" : "5432",
9+
"database" : "db",
10+
"schema" : "public",
11+
"user" : "postgres",
12+
"password" : "changeme",
13+
"poolSize" : 5
14+
},
15+
"api" : {
16+
"host" : "0.0.0.0",
17+
"port" : 8888,
18+
"token" : "letmein"
19+
}
20+
}

docker/bot.DockerFile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
FROM openjdk:18
2+
3+
WORKDIR /app
4+
5+
ADD bot/build/libs/bot-1.0-all.jar bot.jar
6+
ADD conf/dev/config.json config.json
7+
8+
ENTRYPOINT ["java", "-Dbot.config=./config.json","-jar", "bot.jar"]

docker/docker-compose.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
version: v3
2+
3+
services:
4+
bot:
5+
image: game-jam-bot
6+
build:
7+
dockerfile: docker/bot.DockerFile
8+
context: ..
9+
networks:
10+
- plugin-jam
11+
depends_on:
12+
- database
13+
ports:
14+
- 8888:8888
15+
database:
16+
image: postgres:14.2
17+
restart: always
18+
user: postgres
19+
environment:
20+
POSTGRES_PASSWORD: "changeme"
21+
POSTGRES_USER: "postgres"
22+
POSTGRES_DB: "db"
23+
networks:
24+
- plugin-jam
25+
networks:
26+
plugin-jam:
27+
name: "plugin-jam"
28+
external: false

docker/kubernetes/database.yaml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: database
5+
spec:
6+
template:
7+
metadata:
8+
labels:
9+
app: database
10+
spec:
11+
containers:
12+
- env:
13+
- name: POSTGRES_DB
14+
value: db
15+
- name: POSTGRES_PASSWORD
16+
value: changeme
17+
- name: POSTGRES_USER
18+
value: postgres
19+
image: postgres:14.2
20+
name: database
21+
volumeMounts:
22+
- mountPath: "var/lib/postgresql/data"
23+
name: postgres-data
24+
volumes:
25+
- name: postgres-data
26+
persistentVolumeClaim:
27+
claimName: postgres-data
28+
selector:
29+
matchLabels:
30+
app: database
31+
---
32+
apiVersion: v1
33+
kind: Service
34+
metadata:
35+
name: database
36+
spec:
37+
selector:
38+
app: database
39+
ports:
40+
- name: postgres
41+
protocol: TCP
42+
port: 5432
43+
---
44+
kind: PersistentVolumeClaim
45+
apiVersion: v1
46+
metadata:
47+
name: postgres-data
48+
spec:
49+
accessModes:
50+
- ReadWriteOnce
51+
resources:
52+
requests:
53+
storage: 3Gi
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: bot
5+
spec:
6+
template:
7+
metadata:
8+
labels:
9+
app: bot
10+
spec:
11+
containers:
12+
- name: bot
13+
image: game-jam-bot
14+
imagePullPolicy: IfNotPresent
15+
ports:
16+
- containerPort: 8888
17+
name: jam-bot
18+
initContainers:
19+
- name: init-myservice
20+
image: busybox:1.28
21+
command: [ 'sh', '-c', "until nslookup database.default.svc.cluster.local; do echo waiting for myservice; sleep 2; done" ]
22+
23+
selector:
24+
matchLabels:
25+
app: bot
26+
---
27+
apiVersion: v1
28+
kind: Service
29+
metadata:
30+
name: bot-01
31+
spec:
32+
ports:
33+
- name: http
34+
port: 80
35+
targetPort: jam-bot
36+
protocol: TCP
37+
selector:
38+
app: bot

docker/kubernetes/ingress.yaml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
apiVersion: networking.k8s.io/v1
2+
kind: Ingress
3+
metadata:
4+
name: game-jam-bot-ingres
5+
annotations:
6+
kubernetes.io/ingress.class: traefik
7+
traefik.ingress.kubernetes.io/router.middlewares: default-game-jam-strip-prefix@kubernetescrd
8+
spec:
9+
rules:
10+
- http:
11+
paths:
12+
- path: /game-jam
13+
backend:
14+
service:
15+
name: bot-01
16+
port:
17+
name: http
18+
pathType: Prefix
19+
---
20+
apiVersion: traefik.containo.us/v1alpha1
21+
kind: Middleware
22+
metadata:
23+
name: game-jam-strip-prefix
24+
spec:
25+
stripPrefix:
26+
prefixes:
27+
- /game-jam
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
kind: Kustomization
2+
apiVersion: kustomize.config.k8s.io/v1beta1
3+
4+
resources:
5+
- ingress.yaml
6+
- database.yaml
7+
- game-jam-bot.yaml

0 commit comments

Comments
 (0)