Amazon Elastic Container Repositories(ECR)具有非常人性化的URI,例如99999999999.dkr.ecr.eu-west-1.amazonaws.com
。是否可以为ECR配置自定义域名?
简单的解决方案是创建一个指向ECR URI的CNAME记录,但这确实不起作用(SSL证书与域名不匹配,由aws ecr get-login
don&生成的密码#39; t pass,无法推送使用自定义域名标记的图片...)。
还有其他选择吗?
答案 0 :(得分:7)
不幸的是,AWS不支持ECR的自定义域名。你现在必须使用自动生成的。有' hacks'关于Nginx代理的中心,但它确实不值得努力。
答案 1 :(得分:0)
如果您使用的是docker-compose,减轻这种丑陋主机部分的一种方法是在ARG
中使用Dockerfile
并在.env
中定义主机。
派生/ Dockerfile:
ARG REGISTRY_HOST
FROM ${REGISTRY_HOST}/namespace/base:latest
...
.env:
REGISTRY_HOST=99999999999.dkr.ecr.eu-west-1.amazonaws.com
docker-compose.yml:
version: "3.3"
services:
base-service:
image: ${REGISTRY_HOST}/namespace/base:latest
build:
context: base/
...
derived-service:
image: ${REGISTRY_HOST}/namespace/derived:latest
build:
context: derived/
args:
- REGISTRY_HOST=${REGISTRY_HOST}
...
将${REGISTRY_HOST}
放在image
声明中的优点是您可以docker-compose push base-service
,它将把图像正确地推送到您的ECS存储库中。
这些都不像AWS允许ECS存储库使用自定义主机名那样干净,但是比在所有Dockerfile
中硬编码那个令人讨厌的字符串更好。您显然也可以在没有docker-compose的情况下执行此操作,但是您必须在命令行上定义build arg,例如docker build --build-arg REGISTRY_HOST=99999999999.dkr.ecr.eu-west-1.amazonaws.com ...