如何为Amazon ECR配置自定义域名

时间:2018-06-01 08:16:54

标签: amazon-web-services docker amazon-ecs

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,无法推送使用自定义域名标记的图片...)。

还有其他选择吗?

2 个答案:

答案 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 ...