我正在通过docker push ...
命令将我的图像推送到 AWS ECR 。图像被标记为特定版本。
当我实际推送具有相同标签的两个不同映像时,这会导致 AWS ECR 注册表中出现两个映像,其中一个未标记。
0.0.1 sha256:572219f8764b21e5a045bcc1c5eab399e2bc2370a37b23cb1ca9298ea39e233a 138.33 MB
sha256:60d161db0b9cb1345cf7c3e6119b8eba7114bc2dfc44c0b3ed02454803f6ef76 138.21MB
Run Code Online (Sandbox Code Playgroud)
这导致的问题是,如果我继续推送更多具有相同标签的图像,存储库的总大小会不断增加。
我想要的是在推送图像时“覆盖”现有标签。这意味着具有相同标签的两个不同 sha256 摘要将导致注册表中的单个图像(当然当标签版本更改时多个)。
有可能这样做吗?如果可能,我想避免使用“未标记的”修剪技术。现在,我的发布脚本会删除以前的相同标签(如果存在),但我觉得这应该由 AWS ECR 处理或docker push
直接处理。
我想知道是否有可能在我自己的服务中注入服务的参数,如果可以,如何?
让我把你放在上下文中.我正在使用FOSFacebookBundle
从config.yml
文件加载一些配置.这些配置的设置(如我的facebook app_id
,secret
,cookie
等)保持了由参数FOSFacebookBundle
与此代码:
// FOS\FacebookBundle\DependencyInjection\FOSFacebookExtension.php
foreach (array('file', 'app_id', 'secret', 'cookie', 'domain', 'logging', 'culture', 'permissions') as $attribute) {
$containerBuilder->setParameter('fos_facebook.'.$attribute, $config[$attribute]);
}
Run Code Online (Sandbox Code Playgroud)
我知道可以通过以下$container
方式检索这些参数:
$container->getParameter('fos_facebook.app_id');
Run Code Online (Sandbox Code Playgroud)
但我想知道是否可以将这些参数直接注入我的服务定义之一.我有一个服务FacebookHelper
,需要这些信息.所以我想做一些事情:
acme.helper.facebook:
class: Application\AcmeBundle\Helper\FacebookHelper
arguments:
entityManager: "@doctrine.orm.entity_manager"
facebook: "@fos_facebook.api"
facebookAttributes:
- "@fos_facebook.app_id"
- "@fos_facebook.secret"
- "@fos_facebook.cookie"
Run Code Online (Sandbox Code Playgroud)
当然,这种语法不起作用,因为Symfony正在寻找一个名fos_facebook.app_id
不存在的服务.
我正在寻找一种避免直接在我的服务中注入容器的解决方案.通过在我的services.yml
文件中进行直接定义,或者通过我的bundle的DI扩展来完成定义我的自定义服务,从中检索参数FOSFacebookBundle
并将其注入其中.
问候,
马特