mu8*_*u88 1 c# raspberry-pi docker .net-core asp.net-core
我正在开发一个通过 Docker 提供的 .NET Core 应用程序。我的开发环境是一台使用 Linux 容器的 Windows 机器。生产环境是树莓派。
由于开发和生产之间的架构不同(x64vs. ARM),我有两个不同的 Dockerfile,它们仅在一行(基本映像)上有所不同:
x64:FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS baseARM:FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim-arm32v7 AS base是否可以避免两个不同的文件?如果是,我该怎么做?是否有可能有类似的东西,if或者我可以引用另一个文件(例如Dockerfile.common)?
对于像这样的简单字符串替换,您可以使用 Dockerfile ARG。如果您使用它来设置FROM基本图像,则需要在任何FROM行之前指定它。(对于其他用途,需要FROM在需要它的每个图像阶段中的行之后指定。)
ARG BASE_IMAGE=mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim
FROM ${BASE_IMAGE} AS base
Run Code Online (Sandbox Code Playgroud)
如果您在 ARM 上构建,那么您需要提供一个docker build --build-arg选项
docker build \
--build-arg BASE_IMAGE=mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim-arm32v7 \
.
Run Code Online (Sandbox Code Playgroud)
除此之外,Docker 没有任何条件或文件包含功能。
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |