在 kubernetes 上使用带有 bitnami/magento 容器的自定义模块
Use custom modules with bitnami/magento container on kubernetes
我有一个自定义模块,我想安装在一个容器上 运行在 kubernetes 集群中使用 bitnami/magento docker 图像.
我目前正在尝试将模块从本地目录安装到容器中 Dockerfile:
# run bitnami's magento container
FROM bitnami/magento:2.2.5-debian-9
# add magento_code directory to the bitnami magento install
# ./magento_data/code contains the module, i.e. Foo/Bar
ADD ./magento_data/code /opt/bitnami/magento/htdocs/app/code
构建并 运行 生成此图像后,站点返回 500 错误。 pod 日志显示 Magento 安装正确,但不知道如何处理自定义模块:
Exception #0 (UnexpectedValueException): Setup version for module 'Foo_Bar' is not specified
因此,为了让事情正常进行,我必须打开容器 shell 和 运行 一些命令:
$ php /opt/bitnami/magento/htdocs/bin/magento setup:upgrade
$ chown -R bitnami:daemon /opt/bitnami/magento/htdocs
第一个解决 magento 设置问题,第二个确保下一次 http 请求进入 Magento 时能够正确生成它需要的任何目录和文件。
这给了我一个正常运行的容器,但是,kubernetes 无法重建这个容器,因为我在安装 Magento 后手动运行设置了一堆命令。
我考虑过 运行在容器 readinessProbe 中执行上述命令,但不确定它是否会在 Magento 状态下 100% 正常工作第一次打电话,旁边看起来很hacky。
任何关于如何在 bitnami/magento 容器中最好地设置自定义模块的建议将不胜感激。
更新:
自从打开这个问题以来,我一直在 Github 上进一步讨论它:https://github.com/bitnami/bitnami-docker-magento/issues/82
我通过使用 composer 而不是手动将模块添加到 app/code 目录来实现它。
我能够通过首先将模块添加到 Packagist 来做到这一点,然后我将我的 Magento Marketplace 身份验证详细信息存储在 auth.json:
{
"http-basic": {
"repo.magento.com": {
"username": <MAGENTO_MARKETPLACE_PUBLIC_KEY>,
"password": <MAGENTO_MARKETPLACE_PRIVATE_KEY>
}
}
}
您可以通过在市场中创建新的访问密钥来获取 public 和私钥值。将文件放在模块根目录中,与 composer.json.
一起
一旦我更新了我的 Dockerfile 以使用 auth.json 并需要自定义模块:
# run bitnami's magento container
FROM bitnami/magento:2.2.5
# Require custom modules
WORKDIR /opt/bitnami/magento/htdocs/
ADD ./auth.json .
RUN composer require foo/bar
然后我完成了新安装,在 magento 容器旁边创建了 db 容器。但是,只要模块版本相同,它也可以与现有数据库一起正常工作。
我有一个自定义模块,我想安装在一个容器上 运行在 kubernetes 集群中使用 bitnami/magento docker 图像.
我目前正在尝试将模块从本地目录安装到容器中 Dockerfile:
# run bitnami's magento container
FROM bitnami/magento:2.2.5-debian-9
# add magento_code directory to the bitnami magento install
# ./magento_data/code contains the module, i.e. Foo/Bar
ADD ./magento_data/code /opt/bitnami/magento/htdocs/app/code
构建并 运行 生成此图像后,站点返回 500 错误。 pod 日志显示 Magento 安装正确,但不知道如何处理自定义模块:
Exception #0 (UnexpectedValueException): Setup version for module 'Foo_Bar' is not specified
因此,为了让事情正常进行,我必须打开容器 shell 和 运行 一些命令:
$ php /opt/bitnami/magento/htdocs/bin/magento setup:upgrade
$ chown -R bitnami:daemon /opt/bitnami/magento/htdocs
第一个解决 magento 设置问题,第二个确保下一次 http 请求进入 Magento 时能够正确生成它需要的任何目录和文件。
这给了我一个正常运行的容器,但是,kubernetes 无法重建这个容器,因为我在安装 Magento 后手动运行设置了一堆命令。
我考虑过 运行在容器 readinessProbe 中执行上述命令,但不确定它是否会在 Magento 状态下 100% 正常工作第一次打电话,旁边看起来很hacky。
任何关于如何在 bitnami/magento 容器中最好地设置自定义模块的建议将不胜感激。
更新:
自从打开这个问题以来,我一直在 Github 上进一步讨论它:https://github.com/bitnami/bitnami-docker-magento/issues/82
我通过使用 composer 而不是手动将模块添加到 app/code 目录来实现它。
我能够通过首先将模块添加到 Packagist 来做到这一点,然后我将我的 Magento Marketplace 身份验证详细信息存储在 auth.json:
{
"http-basic": {
"repo.magento.com": {
"username": <MAGENTO_MARKETPLACE_PUBLIC_KEY>,
"password": <MAGENTO_MARKETPLACE_PRIVATE_KEY>
}
}
}
您可以通过在市场中创建新的访问密钥来获取 public 和私钥值。将文件放在模块根目录中,与 composer.json.
一起一旦我更新了我的 Dockerfile 以使用 auth.json 并需要自定义模块:
# run bitnami's magento container
FROM bitnami/magento:2.2.5
# Require custom modules
WORKDIR /opt/bitnami/magento/htdocs/
ADD ./auth.json .
RUN composer require foo/bar
然后我完成了新安装,在 magento 容器旁边创建了 db 容器。但是,只要模块版本相同,它也可以与现有数据库一起正常工作。