gpt4 book ai didi

docker - 如何在 mini(Kubernetes) 环境中运行 composer install

转载 作者:行者123 更新时间:2023-12-02 12:06:51 27 4
gpt4 key购买 nike

我正在寻找能够在 中运行此命令的最佳 Kubernetes 配置。本地 Kubernetes 环境 (通过 Minikube)

composer install

我希望做的是类似于 docker 版本的东西:
这将启动一个容器,运行 composer install 命令,然后再次删除该容器。
docker run --rm -i -t -v $(pwd):/app composer:latest composer install

这不起作用,因为 kubectl 没有挂载卷的选项(这是指示项目的 composer.json 文件所必需的)

我现在正在做的是,包括 Composer 容器配置在 Kubernetes deployment.yml 文件中。
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-site
labels:
app: web
spec:
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
# The Application
- name: api-app
image: api_app:my_company
volumeMounts:
- name: shared-api-data
mountPath: /var/www
env:
- name: DB_HOST
value: "xx.xx.xx.xx"
- name: DB_DATABASE
value: "my_database"
- name: DB_USER
value: "my_database_user"
- name: DB_PASSWORD
value: "my_database_password"
# The Web Server
- name: api-web
image: api_web:my_company
volumeMounts:
- name: shared-api-data
mountPath: /var/www
ports:
- containerPort: 80
# Composer
- name: composer
image: composer
volumeMounts:
- name: shared-api-data
mountPath: /app
args:
- composer
- install
volumes:
- name: shared-api-data
hostPath:
path: /var/www

我使用以下命令创建实际部署:
kubectl create -f deployment.yml

我一直看到这个错误(在我的 Minikube 仪表板中):'back-off failed to restart container'(可能是因为 composer install 命令完成,因此容器退出)。我知道有一个 重启策略 pod 的配置参数,但我不想为我的其他容器(网络和应用程序)设置此值。所以为 Composer 创建一个单独的deployment.yml文件可能会更好吗?

另一种选择(我保留最后,因为我不是它的粉丝)是在我的 php-fpm 镜像中安装 composer。

干杯!

最佳答案

您应该构建一个包含应用程序代码的自定义 Docker 镜像。 composer install命令应该在您的 Dockerfile 中.当您构建要部署的应用程序的新版本时,您(或者,更好的是,您的 CI 系统)需要 docker build新图像,docker push将其保存到注册表中,然后更新 Kubernetes 部署对象中的版本标记。

“运行 Docker 容器”的 Docker 开发模式,其中镜像只有语言运行时,而应用程序代码实际上位于绑定(bind)挂载的主机目录中,这在 Kubernetes 或任何其他集群安装中都不起作用(人们遇到了麻烦)出于类似的原因,也尝试在 Docker Swarm 中执行此操作)。

关于docker - 如何在 mini(Kubernetes) 环境中运行 composer install,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51483578/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com