Accelerate your web development with this ready-to-use development environment. This repository offers a complete solution for Kubernetes, integrating Symfony, Svelte, and PostgreSQL.
.
├── backend
│ ├── dev
│ │ ├── symfony # symfony app
│ │ │ └── [...]
│ │ ├── Dockerfile # docker image for development
│ │ ├── .env # development environment variables
│ │ └── Makefile # rules to develop the backend as a standalone component
│ ├── backend-config.yaml # |
│ ├── backend-secret.yaml # | k8s deployment files
│ ├── backend.yaml # |
│ ├── Dockerfile # docker image for deployment
│ └── Makefile # rules to test, build and push deployment image on DockerHub
├── database
│ ├── dev
│ │ ├── server # postgresql server config
│ │ │ └── [...]
│ │ ├── Dockerfile # docker image for development
│ │ ├── .env # development environment variables
│ │ └── Makefile # rules to develop the database as a standalone component
│ ├── database-config.yaml # |
│ ├── database-secret.yaml # | k8s deployment files
│ ├── database.yaml # |
│ ├── Dockerfile # docker image for deployment
│ └── Makefile # rules to test, build and push deployment image on DockerHub
├── frontend
│ ├── dev
│ │ ├── svelte # svelte app
│ │ │ └── [...]
│ │ ├── Dockerfile # docker image for development
│ │ ├── .env # development environment variables
│ │ └── Makefile # rules to develop the frontend as a standalone component
│ ├── frontend-config.yaml # |
│ ├── frontend-secret.yaml # | k8s deployment files
│ ├── frontend.yaml # |
│ ├── Dockerfile # docker image for deployment
│ └── Makefile # rules to test, build and push deployment image on DockerHub
├── README.md
├── compose.yaml # docker cluster for development
└── Makefile # rules to automate the deployment process
.env
files in the dev/
directory define variables for development purposes only. They should use the same labels as {frontend|backend|database}-secret.yaml
files but with simple values. These files can be safely pushed to the repository.
data:
labels in {frontend|backend|database}-secret.yaml
files should remain empty. These variables can be added using GitHub Actions, providing environment variables without appearing in the repository.
Makefiles
in the dev/
directory provide rules for managing Docker containers to develop components as standalone entities. A volume is used to synchronize changes between the host and the container.
MAKEFLAGS := --silent
NAME := {frontend|backend|database}-standalone
build:
echo "[MAKE] building $(NAME)" && docker buildx build -t $(NAME) . || echo "[MAKE] skip"
run: build
echo "[MAKE] running $(NAME)" && docker run --name $(NAME) -p port:port -v src:dst -it $(NAME) || echo "[MAKE] skip"
# no volume mounting for the database component to avoid permission conflicts
stop:
echo "[MAKE] stopping $(NAME)" && docker stop $(NAME) 2>/dev/null || echo "[MAKE] skip"
clean: stop
echo "[MAKE] removing $(NAME)" && docker rm $(NAME) 2>/dev/null || echo "[MAKE] skip"
re: clean run
fclean: clean
echo "[MAKE] removing $(NAME)'s image" && docker image rm $(NAME) 2>/dev/null || echo "[MAKE] skip"
.PHONY: build run stop clean re fclean