PHP本地开发 - minikube或docker-compose?

时间:2018-06-10 21:19:23

标签: kubernetes minikube

我正在开发一个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

因此将端口转发到localhost并装入卷。 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

我很清楚hostPathvolume下)不支持相对路径这一事实,因为Pod不知道当前的工作目录。

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

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

2 个答案:

答案 0 :(得分:0)

它是PHP真的很重要吗?如果它是python会不会有任何不同?例如?

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

掌舵,我想,你可以建立自己的自定义图表。

答案 1 :(得分:0)

documentation中所述,您可以使用postStart脚本来设置依赖项:

spec:
  containers:
  - name: lifecycle-demo-container
    image: nginx
    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]

在section命令中,您可以在容器中执行任何类型的脚本。