我正在开发一个 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,您可以构建自己的自定义图表。


