A web app built with:
- Spring Boot
- React
- Docker, Kubernetes, Jenkins
- Java 8
- MySQL database
cd backend
./mvnw package
java -jar ./application/target/application-0.0.1-SNAPSHOT.jar
- schema:
psi
- username:
root
- password:
pass
-
Jan Abacki
- username:
jan
- password:
secret
- role:
researcher
- username:
-
Lech Wojcik
- username:
lech
- password:
secret
- role:
syllabus_author
- username:
-
Jozef Malinowski
- username:
jozef
- password:
secret
- role:
program_committee
- username:
-
Marek Nowak
- username:
marek
- password:
secret
- role:
administrator
- username:
- NodeJS
- npm
npm install
npm run build # or: npm run start
Run API tests:
docker-compose run api-tester http://nginx /test/courses_and_specialities_crud.yml --print-bodies=true
- docker
- docker-compose
- minikube
docker-compose up -d
Then open in browser http://psi.localhost
Endpoint /api
will respond with 502 Bad Gateway until mvnw package
finishes.
Check progress with: docker-compose logs -f backend
Status & logs:
docker-compose ps
docker-compose logs
docker-compose logs -f backend
docker-compose logs -f frontend
docker-compose exec nginx tail /var/log/nginx/psi.access.log
docker-compose exec nginx tail /var/log/nginx/psi.error.log
Shutdown:
docker-compose down
Start cluster:
minikube start --extra-config=apiserver.service-node-port-range=80-30000
Set up local registry:
kubectl create -f devops/prod/kubernetes/kube-registry.yaml
kubectl port-forward --namespace kube-system $(kubectl get po -n kube-system | grep kube-registry-v0 | \awk '{print $1;}') 5000:5000 # leave running in separate terminal
Build images and push to registry:
docker build -f devops/prod/docker/backend/Dockerfile -t team16-backend .
docker tag team16-backend localhost:5000/team16-backend
docker push localhost:5000/team16-backend
docker build -f devops/prod/docker/nginx/Dockerfile -t team16-nginx .
docker tag team16-nginx localhost:5000/team16-nginx
docker push localhost:5000/team16-nginx
Deploy the app:
kubectl delete daemonsets,replicasets,services,deployments,pods,rc,persistentvolumeclaims --all
kubectl apply -f devops/prod/kubernetes
minikube service nginx --url
Build Jenkins image and run (mount docker and docker.sock from host):
docker build -f devops/prod/docker/jenkins/Dockerfile -t team16-jenkins .
docker run -d -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -p 8080:8080 --name=jenkins-master team16-jenkins
Configure Jenkins app (served on host endpoint - localhost:8080).
Rembember - kubernetes local registry must be set up on host and served (5000 port should be forwarded)
- Install default plugins
- Log in
- Create pipeline using given Jenkinsfile
- Use script
hooks/pre-push
to trigger first job
Retrigering builds by code changes (local):
- Make a change in code
- Retrigger changes using scipt below (provide USER and PASSWORD for Jenkins)
./hooks/pre-push $USER $PASS