我正在开发一个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时,我希望仅针对开发保持相同的行为,因此通常具有以下规范的部署:
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
我非常清楚 volume
下的 hostPath
不支持相对路径,因为 Pod
不知道当前的工作目录。
我所需要做的就是提供一种方法,使所有开发人员只需拉取代码,运行一个命令,并使其运行起来。我可以想象这可以通过 makefile
处理,但如果有更简单的方法,我真的很想避免使用它。
问题是本地开发 PHP 应用程序的最佳实践方法是什么?我们应该坚持使用 docker-compose
还是改用带有 minikube
的 Kubernetes?