0

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

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

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

4

1 回答 1

0

将 args 传递给 dockerfile,然后根据 TARGETOS 变量进行相关操作。这适用于linux,对于windows,我想它是相似的,只是给你一些想法。

命令:

export TARGETOS=windowsservercore-1803
docker-compose build

码头工人-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 \
于 2018-07-13T09:49:09.910 回答