You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A speedrun attempt to clone [MAL](https://myanimelist.net/) lists into a github pages subdomain, using SpringBoot. IaC automation provided by OCI containers, compose, github actions and scaffolding with shellscript.
4
-
5
-
The second attempt is to make the app ~**blazingly**~ fast by having a slim container image build, featuring:
6
-
- alpine as OCI container distro;
5
+
Featuring:
6
+
- Alpine as OCI container distro;
7
7
-[corretto-22](https://hub.docker.com/_/amazoncorretto) as JRE;
8
-
-symbol stripping with [jlink](https://docs.oracle.com/en/java/javase/17/docs/specs/man/jlink.html);
9
-
-multi-stage builds to avoid container layer bloat.
8
+
-Symbol stripping with [jlink](https://docs.oracle.com/en/java/javase/17/docs/specs/man/jlink.html);
9
+
-Multi-stage builds to avoid container layer bloat.
10
10
- TDD (Test-Driven-Development) is implemented on build on a layer that will be discarded from the final production image, which will contain the artifact.
4.**make up/down** to respectively run or stop the app.
22
+
3. Test with **make test**
27
23
28
-
5. general infra debugging
29
-
-[util-linux/sys-utils](https://github.com/util-linux/util-linux/tree/master/sys-utils) namespaces related tools
24
+
4. Run/Stop the app: **make up/down**
30
25
31
-
## Scaffolding
26
+
###Scaffolding
32
27
33
-
1.**make scaff** to run [setup.sh](./scripts/skel.sh) and generate the project skeleton directory structure:
28
+
1.**make scaff** to run [setup.sh](./scripts/skel.sh) and generate a similar project directory structure
34
29
35
-
## Deployment
30
+
###Deployment
36
31
37
32
This repository uses Github Actions for Continuous Integration. Similar to how to run manually, the [yaml script](./.github/workflows/ci.yml) calls Makefile, which calls compose.yml, which runs the containers based on the specific Dockerfile context. It consists in three containers:
38
33
- server: the SpringBoot application on a slim JRE with amazon-corretto and the Alpine distro.
39
34
- client: the Yew application frontend on a slim Rust environment. [This](./client/Dockerfile) multi-stage build was inspired by codefeetime's [article](https://www.codefeetime.com/post/docker-config-for-actix-web-diesel-and-postgres/).
40
35
- nginx as web server, reverse proxy, etc.
41
36
42
-
### compose (+ Podman Service)
37
+
####compose (+ Podman Service)
43
38
44
39
Compose concentrates in orchestrating multiple containers in a single host. To do this with k8s, you would need [kind](https://kind.sigs.k8s.io/), [minikube](https://minikube.sigs.k8s.io/docs/start/), [k3s](https://k3s.io/) (does not use virtualization) or similar. It was made to be compatible with other OCI runtimes, such as Podman, which was one of the first to enable rootless containers, and can be setup with compose using the Podman Service's systemd unit file for unix sockets.
45
40
@@ -51,7 +46,7 @@ Source the script and run it to run compose with podman, or just put a ```make u
51
46
;source ./scripts/ccr.sh; checker
52
47
```
53
48
54
-
### k8s
49
+
####k8s
55
50
56
51
Kubernetes is a container orchestrator that have a YAML syntax similar to the CI deployment from this repo. To run this project on single host just like the Compose tool, you can use tools like kind or minikube in a full-virtualized environment or k3s which don't use full-virtualization. The cluster setup such as ingress and egress will not be covered here.
0 commit comments