Установите Docker и Docker Compose на образ Docker - PullRequest
1 голос
/ 07 января 2020

Я работаю над контейнером CI / CD. У меня есть проект веб-API, разработанный в. NET Framework 4.6.2. Это приложение включило поддержку docker.

Ожидаемый рабочий сценарий:

Мне нужно настроить CI, который должен создать приложение, в виде docker изображения и пу sh в хранилище ECR. Я должен развернуть то же самое в ECS. Наконец, мне нужно запустить SQL (RDS) также как docker и развернуть как часть этого.

В настоящее время мне нужно собрать и создать sh docker образ в ECR.

Текущий прогресс:

Чтобы создать приложение, я создал пользовательский docker в качестве сервера сборки. Найдите мой текущий файл docker, использованный для создания образа docker;

    # escape=`

FROM microsoft/dotnet-framework:4.7.2-runtime

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
#Install NuGet CLI
ENV NUGET_VERSION 4.4.1
RUN New-Item -Type Directory $Env:ProgramFiles\NuGet; `
    Invoke-WebRequest -UseBasicParsing https://dist.nuget.org/win-x86-commandline/v$Env:NUGET_VERSION/nuget.exe -OutFile $Env:ProgramFiles\NuGet\nuget.exe

#Install AWS CLI
RUN Invoke-WebRequest -UseBasicParsing https://s3.amazonaws.com/aws-cli/AWSCLI64PY3.msi -OutFile AWSCLI64PY3.msi; `
    Start-Process "msiexec.exe"  -ArgumentList '/i', 'AWSCLI64PY3.msi', '/qn', '/norestart' -Wait -NoNewWindow; `
    Remove-Item -Force AWSCLI64PY3.msi; `


# Install VS Test Agent
    Invoke-WebRequest -UseBasicParsing https://download.visualstudio.microsoft.com/download/pr/12210068/8a386d27295953ee79281fd1f1832e2d/vs_TestAgent.exe -OutFile vs_TestAgent.exe; `
    Start-Process vs_TestAgent.exe -ArgumentList '--quiet', '--norestart', '--nocache' -NoNewWindow -Wait; `
    Remove-Item -Force vs_TestAgent.exe; ` 

# Install VS Build Tools
    Invoke-WebRequest -UseBasicParsing https://download.visualstudio.microsoft.com/download/pr/12210059/e64d79b40219aea618ce2fe10ebd5f0d/vs_BuildTools.exe -OutFile vs_BuildTools.exe; `
    # Installer won't detect DOTNET_SKIP_FIRST_TIME_EXPERIENCE if ENV is used, must use setx /M
    setx /M DOTNET_SKIP_FIRST_TIME_EXPERIENCE 1; `
    Start-Process vs_BuildTools.exe -ArgumentList '--add', 'Microsoft.VisualStudio.Workload.MSBuildTools', '--add', 'Microsoft.VisualStudio.Workload.NetCoreBuildTools', '--add', 'Microsoft.VisualStudio.Workload.WebBuildTools;includeRecommended', '--quiet', '--norestart', '--nocache' -NoNewWindow -Wait; `
    Remove-Item -Force vs_buildtools.exe; `
    Remove-Item -Force -Recurse \"${Env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\"; `
    Remove-Item -Force -Recurse ${Env:TEMP}\*; `
    Remove-Item -Force -Recurse \"${Env:ProgramData}\Package Cache\"

# Set PATH in one layer to keep image size down.
RUN setx /M PATH $(${Env:PATH} `
    + \";${Env:ProgramFiles}\NuGet\" `
    + \";${Env:ProgramFiles(x86)}\Microsoft Visual Studio\2017\TestAgent\Common7\IDE\CommonExtensions\Microsoft\TestWindow\" `
    + \";${Env:ProgramFiles(x86)}\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\")

# Install Targeting Packs
RUN @('4.0', '4.5.2', '4.6.2', '4.7.2') `
    | %{ `
        Invoke-WebRequest -UseBasicParsing https://dotnetbinaries.blob.core.windows.net/referenceassemblies/v${_}.zip -OutFile referenceassemblies.zip; `
        Expand-Archive -Force referenceassemblies.zip -DestinationPath \"${Env:ProgramFiles(x86)}\Reference Assemblies\Microsoft\Framework\.NETFramework\"; `
        Remove-Item -Force referenceassemblies.zip; `
    }

Здесь я установил свои предварительные требования, как показано ниже;

  • NuGet
  • AWS CLI
  • Элемент списка
  • VS Test Agent
  • VS Инструменты сборки

Вопрос / Вопрос:

Поскольку приложение включило docker -compose, я могу использовать команду MSBuild для создания образа docker, как указано ниже;

msbuild "%~dp0SampleDevOps.sln" /p:TargetFrameworkVersion=v4.6.2 /p:Configuration=Release /p:PackageAsSingleFile=false /p:OutDir=%~dp0\artifacts\ docker-compose.dcproj

Эти команды успешно работали на моем локальном компьютере ( Windows 10). Но когда я запускаю сборку кода, я получаю сообщение об ошибке, как показано ниже:

C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Sdks\Microsoft.Docker.Sdk\build\Microsoft.VisualStudio.Docker.Compose.targets(195,5):

ошибка: MSB0001: внутренняя ошибка MSBuild: SampleDevOps.sln неожиданно не является корневым путем [C: \ codebuild \ tmp \ output \ src096397699 \ src \ github.com \ xxxx \ test1 \ docker -compose.dcproj]

Здесь я подумал, что мне нужно установить docker и docker - также составить в моем сервере сборки.

Мое понимание, верно? Я иду в правильном направлении? Если да, пожалуйста, помогите мне сделать это из файла docker, который я разместил ранее. Я также запутался, что нет встроенного docker, который уже содержит этот AWS CLI и докеры?

...