如何解决参数化 Docker 镜像前缀
我有一个包含以下内容的 Dockerfile
# Build
FROM ${ECR_PREFIX}/maven:3.6.3-jdk-11 AS build
COPY src /home/app/src
COPY pom.xml /home/app
RUN mvn -f /home/app/pom.xml clean package
# Package
FROM ${ECR_PREFIX}/openjdk:11-jre-slim
COPY --from=build /home/app/target/application.jar application.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","application.jar"]
我尝试使用
构建它export PREFIX=${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com
docker build -t backend --build-arg ECR_PREFIX=$PREFIX .
但这行不通。由于各种原因,我真的不想硬编码前缀,尤其是 ${AWS::AccountId} 部分。
这里有什么提示吗?
解决方法
您必须在 Dockerfile 中明确声明 ARG
。如果您 use an ARG
value in a FROM
line,则 ARG
需要出现在任何 FROM
之前。 (其他 ARG
需要在使用它们的每个构建阶段重复。)
ARG REGISTRY=docker.io
FROM ${REGISTRY}/maven:3.6.3-jdk-11 AS build
REGISTRY=${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com
docker build \
-t $REGISTRY/backend:$(git rev-parse HEAD) \
--build-arg REGISTRY=$REGISTRY \
.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。