PHP Локальная разработка - мини-куб или docker-compose? - PullRequest
0 голосов
/ 11 июня 2018

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

Мне хорошо известен тот факт, что hostPathvolume) не поддерживает относительный путьпоскольку Pod не имеет представления о текущем рабочем каталоге.

Все, что мне нужно сделать, это предоставить всем разработчикам способ просто извлечь код, запустить команду и запустить ее.Я могу представить, что это можно сделать с помощью makefile, но я бы очень хотел этого избежать, если есть более простой способ.

Вопрос в том, каков наилучший подход к локальной разработке приложений PHP?Должны ли мы придерживаться docker-compose или использовать Kubernetes вместо minikube?

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Как описано в документации , вы можете использовать скрипт 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 вы можете выполнять любые скрипты в вашемконтейнер.

0 голосов
/ 11 июня 2018

Имеет ли значение тот факт, что это PHP?Будет ли что-нибудь другое, если это будет, например, python?

Если нет, то вам следует рассмотреть helm .Это менеджер пакетов для kubernetes.Вы просто делаете helm install package, и он устанавливает все зависимости для работы всего вашего приложения.

Думаю, с помощью helm вы можете создавать свои собственные графики.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...