diff --git a/frontend/Dockerfile b/frontend/Dockerfile index e1a86adda9bdc4059a2197ec00f9c0b930f4f115..5f0b7e51048f4323aed09f2a1e2717fb675d3964 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -15,5 +15,15 @@ COPY . . RUN npm run build # stage 2: move static frontend stuff to caddys root folder to make caddy serve our frontend instead of spring -FROM caddy:alpine -COPY --from=build-frontend /app/dist /usr/share/caddy \ No newline at end of file +FROM node:20-alpine + +WORKDIR /app + +RUN npm install -g http-server + +COPY --from=build-frontend /app/dist /app + +EXPOSE 80 + +# einfacher http-server +CMD ["http-server", "/app", "-p", "80"] \ No newline at end of file diff --git a/minikube-prod/backend.yaml b/minikube-prod/backend.yaml index 4ee09074a239f93372407ffde6b1597bb9db39b0..6b7fd9917bcdd2d5dd0b7f41087c193db838aa55 100644 --- a/minikube-prod/backend.yaml +++ b/minikube-prod/backend.yaml @@ -14,7 +14,8 @@ spec: spec: containers: - name: backend-container - image: backend-image + image: backend-image:latest + imagePullPolicy: IfNotPresent ports: - containerPort: 9876 env: @@ -23,7 +24,7 @@ spec: - name: MONGO_PASSWORD value: tododbadminpassword - name: MONGO_HOST - value: mongodb-servicevice in Kubernetes. + value: mongodb-service - name: MONGO_PORT value: "27017" - name: MONGO_DB diff --git a/minikube-prod/caddy.yaml b/minikube-prod/caddy.yaml new file mode 100644 index 0000000000000000000000000000000000000000..308df16cddd0be0e63d525fbe9a9524a8343fd86 --- /dev/null +++ b/minikube-prod/caddy.yaml @@ -0,0 +1,76 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: caddy-deployment +spec: + replicas: 1 + selector: + matchLabels: + app: caddy-server + template: + metadata: + labels: + app: caddy-server + spec: + containers: + - name: caddy-container + image: caddy:alpine + ports: + - containerPort: 80 + volumeMounts: + - mountPath: /usr/share/caddy + name: frontend-files + - mountPath: /etc/caddy/Caddyfile + subPath: Caddyfile + name: caddy-config + volumes: + - name: frontend-files + persistentVolumeClaim: + claimName: caddy-pvc + - name: caddy-config + configMap: + name: caddy-config + +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: caddy-config +data: + Caddyfile: | + :80 { + root * /usr/share/caddy + file_server + + reverse_proxy /user* backend-service:9876 { + health_uri /health + health_interval 10s + health_timeout 1s + } + } + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: caddy-pvc +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + +--- +apiVersion: v1 +kind: Service +metadata: + name: caddy-service +spec: + selector: + app: caddy-server + ports: + - protocol: TCP + port: 80 + targetPort: 80 + type: LoadBalancer diff --git a/minikube-prod/frontend.yaml b/minikube-prod/frontend.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f47fc859c7c270bd3eb833feb4927860bdc45e58 --- /dev/null +++ b/minikube-prod/frontend.yaml @@ -0,0 +1,33 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: frontend-deployment +spec: + replicas: 1 + selector: + matchLabels: + app: frontend + template: + metadata: + labels: + app: frontend + spec: + containers: + - name: frontend-container + image: frontend-image + imagePullPolicy: IfNotPresent # ohne diesen wert versucht minikube wieso auch immer images von dockerhub zu ziehen + ports: + - containerPort: 80 +--- +apiVersion: v1 +kind: Service +metadata: + name: frontend-service +spec: + selector: + app: frontend + ports: + - protocol: TCP + port: 80 + targetPort: 80 + type: LoadBalancer diff --git a/minikube-prod/mongodb-pv.yaml b/minikube-prod/mongodb-pv.yaml new file mode 100644 index 0000000000000000000000000000000000000000..84b522b8de1a8b8ec097e5dc5c736b65485d0064 --- /dev/null +++ b/minikube-prod/mongodb-pv.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: mongo-pv +spec: + capacity: + storage: 1Gi + accessModes: + - ReadWriteOnce + hostPath: + path: /data/mongo diff --git a/minikube-prod/mongodb-pvc.yaml b/minikube-prod/mongodb-pvc.yaml new file mode 100644 index 0000000000000000000000000000000000000000..586dbe4df32e335051e59e1920f7e29614d9ed91 --- /dev/null +++ b/minikube-prod/mongodb-pvc.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: mongo-pvc +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi diff --git a/src/main/java/com/cloudcomputing/todo/controller/UserController.java b/src/main/java/com/cloudcomputing/todo/controller/UserController.java index 8589673617a09ded6e4216aaa018ec24eac9848b..0fec196879260fafe5c8e040188508901f346713 100644 --- a/src/main/java/com/cloudcomputing/todo/controller/UserController.java +++ b/src/main/java/com/cloudcomputing/todo/controller/UserController.java @@ -13,11 +13,12 @@ import java.util.List; /* * 1. eval $(minikube docker-env) (docker-befehle werden dadurch in minikube ausgeführt) | - * windows: Invoke-Expression (minikube docker-env) // minikube muss dafür laufen auf windows, also erst 2. dann 1. + * windows: & minikube -p minikube docker-env --shell powershell | Invoke-Expression + * minikube muss dafür laufen auf windows, also erst 2. dann 1. * 2. minikube starten * 3. docker build -t <name> (einmal für jedes dockerfile um images zu erstellen) - * 4. - + * 4. lokale images in minikube laden mit minikube image load <name> + * 5. .yaml dateien mit kubectl apply -f <pfad-zur-yaml-datei> */ @RestController