You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地Minikube部署带PostgreSQL的Django项目求助及配置文件

在Minikube上部署Django+PostgreSQL项目的修正方案

现有部署文件的关键问题

  • PostgreSQL服务缺失:未创建PostgreSQL的Service,导致Django无法通过postgres-service域名访问数据库
  • PostgreSQL环境变量错误:官方Postgres镜像要求的环境变量是POSTGRES_USER、POSTGRES_PASSWORD,而非你配置的DATABASE_USER、DATABASE_PASS
  • Django容器启动命令错误:
    • 多命令执行格式错误,需通过shell串联(&&)
    • 缺少runserver指令,且未绑定0.0.0.0(容器内必须绑定所有IP才能被外部访问)
  • PVC定义缺失:PostgreSQL Deployment引用了postgres-pvc,但未提供该PVC的配置文件

修正后的完整部署文件

1. PostgreSQL凭证Secret

先创建存储数据库用户名和密码的Secret:

apiVersion: v1
kind: Secret
metadata:
  name: postgres-credentials
type: Opaque
data:
  user: cG9zdGdyZXM=  # 示例:echo -n "postgres" | base64 后的结果
  password: eW91cnBhc3N3b3Jk  # 示例:echo -n "yourpassword" | base64 后的结果

2. PostgreSQL持久化存储PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgres-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

3. 修正后的PostgreSQL Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgres-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgres-container
  template:
    metadata:
      labels:
        app: postgres-container
        tier: backend
    spec:
      containers:
        - name: postgres-container
          image: postgres:9.6.6
          env:
            - name: POSTGRES_USER
              valueFrom:
                secretKeyRef:
                  name: postgres-credentials
                  key: user
            - name: POSTGRES_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: postgres-credentials
                  key: password
            - name: POSTGRES_DB
              value: kubernetes_django
          ports:
            - containerPort: 5432
          volumeMounts:
            - name: postgres-volume-mount
              mountPath: /var/lib/postgresql/data
      volumes:
        - name: postgres-volume-mount
          persistentVolumeClaim:
            claimName: postgres-pvc

4. PostgreSQL Service

apiVersion: v1
kind: Service
metadata:
  name: postgres-service
spec:
  selector:
    app: postgres-container
  ports:
    - port: 5432
      targetPort: 5432

5. 修正后的Django Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: django1
  labels:
    app: django1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: django-container
  template:
    metadata:
      labels:
        app: django-container
    spec:
      containers:
        - name: todo
          image: jayantkeer/image-of-kubernets
          command: ["sh", "-c"]
          args: ["python manage.py makemigrations && python manage.py migrate && python manage.py runserver 0.0.0.0:8000"]
          ports:
            - containerPort: 8000
          env:
            - name: POSTGRES_USER
              valueFrom:
                secretKeyRef:
                  name: postgres-credentials
                  key: user
            - name: POSTGRES_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: postgres-credentials
                  key: password
            - name: POSTGRES_HOST
              value: postgres-service
            - name: POSTGRES_DB
              value: kubernetes_django

6. Django Service(保留你的原配置)

apiVersion: v1
kind: Service
metadata:
  name: todo
  labels:
    app: todo
spec:
  type: NodePort
  selector:
    app: django-container
  ports:
    - port: 8000
      targetPort: 8000

部署步骤

  1. 启动Minikube:
    minikube start
    
  2. 依次创建所有资源:
    kubectl apply -f postgres-secret.yaml
    kubectl apply -f postgres-pvc.yaml
    kubectl apply -f postgres-deployment.yaml
    kubectl apply -f postgres-service.yaml
    kubectl apply -f django-deployment.yaml
    kubectl apply -f django-service.yaml
    
  3. 验证Pod状态,确保所有Pod处于Running状态:
    kubectl get pods
    
  4. 获取Django应用的访问地址:
    minikube service todo --url
    
    复制输出的URL到浏览器即可访问你的Django项目。

内容的提问来源于stack exchange,提问作者Noob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 17:10:15