Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Collection of simple applications for Learning By Doing across different XaaS (Anything as a Service) stacks and cloud infrastructures

License

NotificationsYou must be signed in to change notification settings

frugan-dev/lbd-xaas

Repository files navigation

License: GPL v3

Learning By Doing: Exploring XaaS with Simple Applications

Collection of simple applications for Learning By Doing across different XaaS (Anything as a Service) stacks and cloud infrastructures.

Inspired by

Getting Started

1) First of all clone this repository:

$ git clone git@github.com:frugan-dev/lbd-xaas.git$cd lbd-xaas

2) Copy and rename these files:

src/.env.dist -> src/.envsrc/private/app/.env.dist -> src/private/app/.env

and edit them according to your needs.

Docker compose

Requirements
Installation

1) Create local CA with mkcert:

$ mkcert -install

2) Run install script:

$cd src$ sudo chmod +x install.sh$ ./install.sh$ docker compose up -d

3) Capture the Docker PHP-FPM container logs:

$ docker compose logs -f php-fpm

and wait until all initialization operations are completed.

4) Browse via HTTPS to the following addresshttps://localhost.

5) Stop, delete everything and return to parent folder:

$ docker compose down$ docker system prune --all$cd ../

Google App Engine standard (second-generation runtime)

Requirements
Installation

Note: PHP v8.2 is used, instead of v8.3, because at the time of writing the following error message appears:

RuntimeError: Unknown runtime 'php83'; supported runtimes are 'go119', 'go120', 'go121', 'go122', 'php81', 'php82', 'python310', 'python311', 'python312', 'python38', 'python39'.

1) Run deploy script:

$cd gae-standard$ sudo chmod +x deploy.sh$ ./deploy.sh

2) Capture the Docker container logs:

$ docker compose logs -flocal

and wait until all initialization operations are completed.

3) Browse the application via HTTP to the following addresshttp://localhost:8080.

4) Browse the administration console via HTTP to the following addresshttp://localhost:8000.

5) Stop, delete everything and return to parent folder:

$ docker compose down$ docker system prune --all$cd ../

Google App Engine flexible (second-generation runtime)

Requirements
Installation

Note: at the time of writing, despite having followed the official documentation, this stack does not work and the following error message appears:

In env: flex, only the following runtimes are allowed: ('python-compat', 'go', 'custom')

1) Run deploy script:

$cd gae-flexible$ sudo chmod +x deploy.sh$ ./deploy.sh

2) Capture the Docker container logs:

$ docker compose logs -flocal

and wait until all initialization operations are completed.

3) Browse the application via HTTP to the following addresshttp://localhost:8080.

4) Browse the administration console via HTTP to the following addresshttp://localhost:8000.

5) Stop, delete everything and return to parent folder:

$ docker compose down$ docker system prune --all$cd ../

Kubernetes (stateful)

Requirements
Installation

1) Createstateful-app image in your Docker local registry:

$ DOCKER_BUILDKIT=1 docker build \  -f k8s-stateful/Dockerfile \  -t registry.local/stateful-app:latest \.

Note: aboutDOCKER_BUILDKIT=1 see herehttps://stackoverflow.com/a/57774684/3929620.

2) Verify that the image was created correctly in Docker local registry:

$ docker image ls

3) Start Minikube cluster:

$ minikube start

4) Push Docker local image to Minikube local registry:

$ minikube image load registry.local/stateful-app

5) Verify that the image was created correctly in Minikube local registry:

$ minikube image ls

6) Apply resources from Kustomize configurations:

$ kubectl apply -k ./k8s-stateful

7) Verify that all pods are inRunning state:

$ kubectl get pods

8) Get the NodePort using the service command:

$ minikube service stateful-app-service --url

9) Browse via HTTP to the address returned (e.g.http://192.168.0.0:12345).

10) Stop and delete everything:

$ kubectl delete -k ./k8s-stateful$ minikube image rm registry.local/stateful-app$ minikube image rm docker.io/bitnami/apache$ minikube stop$ minikube delete$ docker system prune --all

Kubernetes (stateless)

Requirements
Installation

1) Createstateless-app image in your Docker local registry:

$ DOCKER_BUILDKIT=1 docker build \  --secret id=.env,src=$PWD/src/.env \  -f k8s-stateless/Dockerfile \  -t registry.local/stateless-app:latest \.

Note: aboutDOCKER_BUILDKIT=1 see herehttps://stackoverflow.com/a/57774684/3929620.

2) Verify that the image was created correctly in Docker local registry:

$ docker image ls

3) Start Minikube cluster:

$ minikube start

4) Push Docker local image to Minikube local registry:

$ minikube image load registry.local/stateless-app

5) Verify that the image was created correctly in Minikube local registry:

$ minikube image ls

6) Apply resources from Kustomize configurations:

$ kubectl apply -k ./k8s-stateless

7) Verify that all pods are inRunning state:

$ kubectl get pods

8) Get the NodePort using the service command:

$ minikube service stateless-app-service --url

9) Browse via HTTP to the address returned (e.g.http://192.168.0.0:12345).

10) Stop and delete everything:

$ kubectl delete -k ./k8s-stateless$ minikube image rm registry.local/stateless-app$ minikube stop$ minikube delete$ docker system prune --all

Known issues

Docker use root user/group in host machine

1) Get your Unix user/group informations:

$ id

2) Add this to/etc/subuid:

{USER}:{UID}:1...

3) Add this to/etc/subgid:

{USER}:{DOCKER_GUI}:1...

4) Add this to/etc/docker/daemon.json:

{"userns-remap":"{USER}"}

to enable Docker's user namespace feature.

5) Restart Docker engine:

$ sudo service docker restart

More info:

More info

SeeLINKS file.

Changelog

See auto-CHANGELOG file.

Contributing

For your contributions please use:

Support

Buy Me A Coffee

License

(ɔ) Copyleft 2024Frugan.
GNU GPLv3, seeCOPYING file.

About

Collection of simple applications for Learning By Doing across different XaaS (Anything as a Service) stacks and cloud infrastructures

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp