Например, запустите приложение Drupal, используя nginx: stable-alpine + drupal: 8.6-fpm-alpine .
- Контейнеру nginx необходимо предоставить общий доступ
/var/www/html
из контейнера drupal для доставки статического содержимого.
- Контейнер drupal должен сохраняться или монтировать данные сайта
/var/www/html/sites
из внешнего хранилища с использованием тома, такого как GCP-PD.
в этом случае локально docker-compose.yml находится ниже.
version: "3"
volumes:
www-data:
services:
drupal:
image: "drupal:8.6-fpm-alpine"
volumes:
- "www-data:/var/www/html"
- "./sites:/var/www/html/sites"
# ...
nginx;
image: "nginx:stable-alpine"
depends_on:
- drupal
volumes:
- "www-data:/var/www/html"
# ...
# ...
как перевести на k8s deploy.yml?
(РЕДАКТИРОВАТЬ) Я попытался следовать, и это не сработало.
apiVersion: apps/v1
kind: Deployment
metadata:
name: mydrupal
labels:
app.kubernetes.io/name: mydrupal
spec:
replicas: 2
selector:
matchLabels:
app.kubernetes.io/name: mydrupal
template:
metadata:
labels:
app.kubernetes.io/name: mydrupal
spec:
volumes:
- name: drupal-data
persistentVolumeClaim:
claimName: "drupal-pvc"
# keep default files for the drupal installer, and chown.
initContainers:
- name: init-drupal-data
image: drupal:8.6-fpm-alpine
imagePullPolicy: IfNotPresent
command: ['sh', '-c']
args: ['cp -r -u /var/www/html/sites/* /tmp/drupal; chown -R www-data:www-data /tmp/drupal']
volumeMounts:
- name: drupal-data
mountPath: /tmp/drupal
subPath: sites
securityContext:
# www-data
fsGroup: 33
containers:
- name: drupal
image: drupal:8.6-fpm-alpine
imagePullPolicy: IfNotPresent
volumeMounts:
# I want to sharing this directory with nginx container.
- name: drupal-data
mountPath: /var/www/html
# I want to persist this directory using external managed storage.
- name: drupal-data
mountPath: /var/www/html/sites
subPath: sites
resources:
limits:
cpu: 800m
memory: 512Mi
requests:
cpu: 200m
memory: 256Mi
- name: nginx
image: nginx:1.14-alpine
imagePullPolicy: IfNotPresent
volumeMounts:
- name: drupal-data
mountPath: /usr/share/nginx/html
ports:
- name: http
containerPort: 80
protocol: TCP
livenessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 120
readinessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 30
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 256Mi
Я прочитал том, pv, pvc docs.
но не нашел никаких решений о том, как выставить каталог внутри контейнера как том.
есть идеи?