Skip to main content
 首页 » 编程设计

kubernetes之PHP 本地开发之minikube 还是 docker-compose

2025年01月19日70dyllove98

我正在开发一个 PHP 应用程序 - 意味着开发我只使用基本 php 容器而不复制任何应用程序代码。

我的 docker-compose 设置如下所示:

version: "3.3" 
services: 
    db: 
        image: postgres:10.0 
        container_name: app-db 
        ports: 
            - 65432:5432 
        environment: 
            POSTGRES_USER: postgres 
            POSTGRES_PASSWORD: secret 
 
    web: 
        image: falnyr/php-images:7.2-apache-postgres 
        container_name: app-webserver 
        volumes: 
            - .:/var/www/html 
        ports: 
            - 8081:80 

因此端口被转发到本地主机并挂载卷。 docker-compose.yml 文件将提交到存储库,因此任何克隆代码的人都可以运行 docker-compose up 来运行它。

切换到 Kubernetes 我只想为 开发 保留相同的行为,所以通常有一个具有以下规范的 Deployment:

apiVersion: apps/v1 
kind: Deployment 
metadata: 
  name: backend 
spec: 
  selector: 
    matchLabels: 
      app: php-app 
      tier: backend 
  replicas: 1 
  template: 
    metadata: 
      labels: 
        app: php-app 
        tier: backend 
    spec: 
      volumes: 
      - name: src 
        hostPath: 
          path: /home/falnyr/projects/php-app 
      containers: 
      - name: php-app 
        image: falnyr/php-images:7.2-apache-postgres 
        volumeMounts: 
        - mountPath: /var/www/html 
          name: src 
        resources: 
          requests: 
            cpu: 100m 
            memory: 100Mi 
        ports: 
        - containerPort: 80 

我很清楚 hostPath(在 volume 下)不支持相对路径,因为 Pod 不知道当前工作目录。

我需要做的就是为所有开发人员提供一种方法,让他们只需提取代码、运行命令并使其运行即可。我可以想象这可以通过 makefile 来处理,但如果有更简单的方法,我真的很想避免这种情况。

问题是本地开发 PHP 应用程序的最佳实践方法是什么?我们应该坚持使用 docker-compose 还是使用带有 minikube 的 Kubernetes?

请您参考如下方法:

它是 PHP 真的很重要吗?例如,如果它是 python,会有什么不同吗?

如果没有,那么你应该考虑 helm .它是 kubernetes 的包管理器。您只需执行 helm install package,它就会安装您的完整应用程序所需的所有依赖项。

我认为,使用 helm,您可以构建自己的自定义图表。