【问题标题】:In Docker how do I build for different os versions of windowsservercore在 Docker 中,我如何为不同操作系统版本的 windowsservercore 构建
【发布时间】:2018-07-13 08:41:56
【问题描述】:

我正在尝试使用 docker 构建我的应用程序,但我需要能够定位 windowsservercore-ltsc2016 (Windows 2016)、windowsservercore-1709 和 windowsservercore-1803。

我唯一能想到的就是每个架构都有一个单独的 dockerfile,但这并不意味着如果将来有变化就很容易更新。必须对 n 个文件进行更改。

此外,当您运行 docker-compose 文件时,还有一种自动方法可以轻松确定您正在运行 1803 版本并使用它,或者最好为您使用的架构再次创建一个 docker-compose 文件.

【问题讨论】:

  • Microsoft 为每个架构使用不同的 dockerfile。例如,您可以查看他们如何为 dotnet 核心执行此操作的示例 (github.com/dotnet/dotnet-docker/tree/master/2.1/runtime)。您的基础映像将根据您的客户端自动匹配,因此如果您只是放置 windowservercore,那么如果您使用的是 1803,它将拉取 1803,如果您使用的是 ltsc,它将拉取 ltsc

标签: docker docker-for-windows windows-container


【解决方案1】:

将 args 传递给 dockerfile,然后根据 TARGETOS 变量进行相关操作。这个在linux上可以,windows下,我猜也差不多,给大家一些思路。

CMD:

export TARGETOS=windowsservercore-1803
docker-compose build

docker-compose.yml:

services:
  my_name:
     build:
       context: .
       args:
         - TARGETOS

Dockerfile:

ARG TARGETOS
ENV TARGETOS ${TARGETOS}

# do things based on TARGETOS arg
# RUN if [ ${TARGETOS} = "windowsservercore-1803" ]; then \

【讨论】:

    猜你喜欢
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 2012-04-05
    • 2018-05-14
    相关资源
    最近更新 更多