gpt4 book ai didi

c# - 避免重复的Dockerfile

转载 作者:行者123 更新时间:2023-12-02 18:45:47 24 4
gpt4 key购买 nike

我正在研究通过Docker交付的.NET Core应用程序。我的开发环境是使用Linux容器的Windows计算机。生产环境是Raspberry Pi。

由于开发和生产之间的体系结构不同(x64ARM),所以我有两个不同的Dockerfile,它们仅在一行中有不同(基本镜像):

  • x64上的开发:FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
  • ARM上生产:FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim-arm32v7 AS base

  • 是否可以避免使用两个不同的文件?如果是,我该怎么办?是否可以使用 if之类的东西,还是可以引用另一个文件(例如 Dockerfile.common)?

    最佳答案

    对于像这样的简单字符串替换,您可以使用Dockerfile ARG 。如果您使用它来设置FROM基本图像it needs to be specified before any FROM lines。 (对于其他用途,需要在每个需要它的图像阶段中的FROM行之后指定它。)

    ARG BASE_IMAGE=mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim
    FROM ${BASE_IMAGE} AS base

    如果您在ARM上构建,则需要提供 docker build --build-arg option

    docker build \
    --build-arg BASE_IMAGE=mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim-arm32v7 \
    .

    除此之外,Docker没有任何条件或文件包含功能。

    关于c# - 避免重复的Dockerfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61638947/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com