mirror of
https://github.com/nextcloud/all-in-one.git
synced 2026-05-30 23:40:08 +00:00
Fix docker registry and community containers (#8091)
This commit is contained in:
@@ -52,14 +52,18 @@ readonly class ContainerDefinitionFetcher {
|
||||
$standardContainerNames = array_column($data['aio_services_v1'], 'container_name');
|
||||
|
||||
$additionalContainerNames = [];
|
||||
$additionalTopLevelContainerNames = [];
|
||||
foreach ($this->configurationManager->aioCommunityContainers as $communityContainer) {
|
||||
if ($communityContainer !== '') {
|
||||
$path = DataConst::GetCommunityContainersDirectory() . '/' . $communityContainer . '/' . $communityContainer . '.json';
|
||||
$additionalData = json_decode((string)file_get_contents($path), true, 512, JSON_THROW_ON_ERROR);
|
||||
$data = array_merge_recursive($data, $additionalData);
|
||||
foreach ($additionalData['aio_services_v1'] as $additionalEntry) {
|
||||
$additionalContainerNames[] = $additionalEntry['container_name'];
|
||||
}
|
||||
if (isset($additionalData['aio_services_v1'][0]['display_name']) && $additionalData['aio_services_v1'][0]['display_name'] !== '') {
|
||||
// Store container_name of community containers in variable for later
|
||||
$additionalContainerNames[] = $additionalData['aio_services_v1'][0]['container_name'];
|
||||
// Store main container_name of community containers in variable for later
|
||||
$additionalTopLevelContainerNames[] = $additionalData['aio_services_v1'][0]['container_name'];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -176,7 +180,7 @@ readonly class ContainerDefinitionFetcher {
|
||||
if ($entry['container_name'] === 'nextcloud-aio-apache') {
|
||||
// Add community containers first and default ones last so that aio_variables works correctly
|
||||
$valueDependsOnTemp = [];
|
||||
foreach ($additionalContainerNames as $containerName) {
|
||||
foreach ($additionalTopLevelContainerNames as $containerName) {
|
||||
$valueDependsOnTemp[] = $containerName;
|
||||
}
|
||||
$valueDependsOn = array_merge_recursive($valueDependsOnTemp, $valueDependsOn);
|
||||
|
||||
@@ -3,8 +3,6 @@ declare(strict_types=1);
|
||||
|
||||
namespace AIO\Docker;
|
||||
|
||||
use AIO\ContainerDefinitionFetcher;
|
||||
use AIO\Data\ConfigurationManager;
|
||||
use GuzzleHttp\Client;
|
||||
|
||||
readonly class DockerHubManager {
|
||||
@@ -15,6 +13,16 @@ readonly class DockerHubManager {
|
||||
$this->guzzleClient = new Client();
|
||||
}
|
||||
|
||||
|
||||
// Official Docker Hub images need the library/ prefix when using the registry API directly.
|
||||
private function normalizeImageName(string $name): string {
|
||||
if (!str_contains($name, '/')) {
|
||||
return 'library/' . $name;
|
||||
}
|
||||
return $name;
|
||||
}
|
||||
|
||||
|
||||
public function GetLatestDigestOfTag(string $name, string $tag) : ?string {
|
||||
$cacheKey = 'dockerhub-manifest-' . $name . $tag;
|
||||
|
||||
@@ -24,6 +32,7 @@ readonly class DockerHubManager {
|
||||
}
|
||||
|
||||
// If one of the links below should ever become outdated, we can still upgrade the mastercontainer via the webinterface manually by opening '/api/docker/getwatchtower'
|
||||
$name = $this->normalizeImageName($name);
|
||||
|
||||
try {
|
||||
$authTokenRequest = $this->guzzleClient->request(
|
||||
|
||||
Reference in New Issue
Block a user