首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP本地开发- minikube还是docker-compose?

PHP本地开发- minikube还是docker-compose?
EN

Stack Overflow用户
提问于 2018-06-11 05:19:23
回答 2查看 820关注 0票数 3

我正在开发一个PHP应用程序--这意味着为了开发,我只使用了一个基本的php容器,而没有复制任何应用程序代码。

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

代码语言:javascript
复制
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

代码语言:javascript
复制
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?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-11 07:06:25

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

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

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

票数 0
EN

Stack Overflow用户

发布于 2018-06-11 18:27:00

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

代码语言:javascript
复制
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命令中,您可以在容器中执行任何类型的脚本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50788133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档