我正在开发一个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
因此,端口被转发到localhost并挂载卷。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?
发布于 2018-06-11 07:06:25
它是PHP这一事实真的很重要吗?例如,如果它是python,会有什么不同吗?
如果不是,那么您应该考虑helm。它是kubernetes的包管理器。你只需执行helm install package
,它就会安装所有的依赖项,让你的完整应用程序正常工作。
我认为,使用helm,您可以构建自己的自定义图表。
发布于 2018-06-11 18:27:00
如documentation中所述,您可以使用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命令中,您可以在容器中执行任何类型的脚本。
https://stackoverflow.com/questions/50788133
复制相似问题