在 MS Azure 中部署的 Docker 容器中无法正常运行 PHP Composer

85次阅读
没有评论

问题描述

在将一个在 Windows WSL-2、Ubuntu 22.04 和 Mac 环境中正常工作的 Docker 容器,部署到 MS Azure 时遇到了问题。他使用了以下命令进行部署:

az group deployment create --resource-group <MyGroup> --template-file azuredeploy.json --parameters parameters.json

容器正确地挂载了存储账户中的文件共享,其中包含了 composer.json 文件。用户可以通过以下命令在容器中访问 BASH:

az container exec --resource-group <MyGroup> --name <MyContainerGroup> --container-name <MyContainerName> --exec-command "/bin/bash"

然而,在容器内运行 composer install 命令时出现了问题。尽管在其他环境中都能正常工作,但在 Azure 上却失败了。尽管 composer.json 文件中没有包含私有仓库,正如上面所述,但在 Azure 上出现了以下错误信息:

Cloning failed using an ssh key for authentication, enter your GitHub credentials to access private reposWhen working with _public_ GitHub repositories only, head to https://github.com/settings/tokens/new?scopes=&description=Composer+on+SandboxHost-638176962110261340+2023-04-21+1757 to retrieve a token.This token will have read-only permission for public information only.

用户已经按照建议生成了访问令牌,但问题仍然存在。他寻求帮助解决这个问题。

解决方案

在进行以下操作之前,请确保备份你的数据,并仔细阅读操作步骤。

解决方案1:检查网络连接和权限

  1. 确保容器内部的网络连接正常。尝试在容器内运行一些简单的网络命令,如 pingcurl,以验证是否可以访问外部网络资源。
  2. 检查容器是否具有足够的权限来访问 Azure 存储帐户。确保在容器定义中正确设置了所需的权限,以便容器能够访问存储账户中的文件共享。

解决方案2:确认令牌设置

  1. 确保你生成的 GitHub 令牌具有足够的权限。在生成令牌时,确保它至少具有读取公共仓库的权限。
  2. 检查令牌是否正确地配置在容器环境中。你可以将令牌设置为容器环境变量,以供 Composer 使用。确保在容器启动时正确设置环境变量。

解决方案3:尝试使用 SSH Key

  1. 如果你的 Composer 项目需要使用 SSH Key 进行认证,请确保 SSH Key 已正确配置在容器内,并且可以在容器内部正常工作。你可以通过在容器内运行 ssh -T git@github.com 测试 SSH Key 是否能够正常连接到 GitHub。

解决方案4:排除其他因素

  1. 尝试在 Azure 容器外部的其他环境中运行相同的容器和命令,以确认问题是否与 Azure 容器环境有关。如果在其他环境中一切正常,则问题可能与 Azure 容器设置有关。

解决方案5:联系 Azure 支持

  1. 如果上述解决方案都无法解决问题,建议联系 Azure 支持团队寻求进一步的帮助。他们可以提供针对特定问题的定制化支持和建议。

无论哪种解决方案,都应该先逐一排除问题可能性,并逐步测试,以确定问题的根本原因。希望以上解决方案能对你解决问题有所帮助!如果你需要进一步的帮助,请随时提问。

正文完