
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
This mini-project is written to demonstrate an Image management engine built using the following technologies.
Frontend
Backend
Infrastructure
Storing images in the DB directly as byte data can work. But overtime, the size of the DB grows out of control. To remedy this situation, we can opt for an object store then in our database we could simply reference the public url of the image.
For this mini-project, we will not deploy an object store on minikube using open source solutions like Minio/Rook. Instead, we could mount a simple persistent volume on disk then use it to store uploaded images.
We are required to update the status of each photo in the Image Viewer tab as users scroll to and fro while accepting or rejecting images.
This implies our database writes for every click. This will not scale if you have millions of clicks a second. Alternatively, we can send the individual accept or deny requests as messages then queue them using Celery periodic tasks which will be executed sometime in future.
It is good practice to implement the frontend as a standalone application using frameworks such as ReactJs or Vue. For simplicity sake, this exercise will use basic html and css wrapped with bulma(a css framework) with some Javascript implemented with old-school Jquery.
Only a limited set of backend testing has been done. We should *** implementing frontend and backend tests. See imageProcessor/tests directory for more
We also need to monitor the entire cluster. This mini-project does not deploy a monitoring stack along side our setup.
No persistent volume for Redis has been added. For persisting redis config data, we might require to add a storage volume.
Install minikube on a Linux based system following these https://minikube.sigs.k8s.io/docs/start/
From the terminal, start the cluster using minikube start
Ensure kubectl is installed, if not, follow this https://v1-18.docs.kubernetes.io/docs/tasks/tools/install-kubectl/ to install it.
To validate that the installation of Kubectl above is complete, run the following command. kubectl version.
Finally, check the status of your minikube cluster using kubectl cluster-info.
Our mini-project relies on the following services to function; Celery, redis and Postgresql.
In this section, we will describe how to deploy each of these services ontop of Minikube. In the deployment directory, you will find Deployment manifests for each of the above services.
Create a service namespace for our stack.
kubectl create namespace imageprocessor
Deploy redis
In the deployment redis directory, run the following command:
kubectl apply -f deployment/redisConfirm that you have a running redis deployment in the imageprocessor namespace using kubectl get pods -n imageprocessor
Deploy PostgreSQL
In the deployment postgres directory, run the following command:
kubectl apply -f deployment/postgresDeploy Django backend
In the deployment django directory, run the following commands in order:
kubectl apply -f deployment/django/service.ymlkubectl apply -f deployment/django/migration.ymlkubectl apply -f deployment/django/import.ymlkubectl apply -f deployment/django/deployment.ymlFinally, wait and verify that all pods in the imageprocessor namespace are running using:
kubectl get pods -n imageprocessor.
This mini-project docker image has been hosted on Dockerhub for ease of use. Alternatively, you can build it locally from the project root directory containing the dockerfile
docker build -t imageprocessor .
This mini-project includes an example test-suite for some models and views.
To run test, in a virtual environment with all dependencies installed, execute the following command:
python manage.py test
To access the deployed application, use the following command:
minikube service --url kubernetes-django-service -n imageprocessor
The above command should expose our web-application using a Nodeport. Obtain the URL and place it in a browser page.
To see health status of the Django stack components, visit this url,
http://<url-from-above>/healthcheck
Django admin default login credentials are as follows:
username: admin password: password
Note:
We use asynchronous tasks to add watermarks to each accepted or rejected image. In a resource limited setup, the celery task might take some time to process and add watermarks to the images in the background.
If your setup is resource limited, then in the image list tab, the new
watermarked images will not display immediately after selection.
!View
(base) Claudes-MBP:image_processor ebaneck$ kubectl get pods -A NAMESPACE NAME READY STATUS RESTARTS AGE imageprocessor celery-beat-57f5f565-f2pbg 1/1 Running 0 101m imageprocessor celery-worker-76ddfd5fb7-qx9b5 1/1 Running 0 101m imageprocessor django-67cf68fd8c-2vftg 1/1 Running 0 3m38s imageprocessor django-db-import-phcxh 0/1 Completed 0 11m imageprocessor django-migrations-622rz 0/1 Completed 0 100m imageprocessor postgres-deployment-7544cd96bd-j27q6 1/1 Running 0 101m imageprocessor redis-5b46dd97b5-rx8ch 1/1 Running 0 101m kube-system coredns-74ff55c5b-k99p9 1/1 Running 0 108m kube-system etcd-minikube 1/1 Running 0 108m kube-system kindnet-7tqn9 1/1 Running 0 104m kube-system kube-apiserver-minikube 1/1 Running 0 108m kube-system kube-controller-manager-minikube 1/1 Running 0 108m kube-system kube-proxy-xgd5n 1/1 Running 0 108m kube-system kube-scheduler-minikube 1/1 Running 0 108m kube-system storage-provisioner 1/1 Running 1 108m
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务