Я занимаюсь разработкой приложения на 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
или использовать Kubernetes вместо minikube
?