簡體   English   中英

docker-compose up 和 docker-compose exec 不使用相同的容器名稱

[英]docker-compose up and docker-compose exec don't use the same container name

早上好。

我正在使用 Docker for Windows 19.03.8,構建 afacb8b; 在 Windows Server 2019 (10.0.17763.1039) 上運行

當我運行 Docker-Compose up -dV 它說:

Creating network "docker_default" with the default driver
Creating docker_python-base_1 ... done
Creating docker_msbuild_1 ... done

但是當我然后使用 Docker-Compose exec 時,它說: ERROR: No container found for msbuild_1

換句話說,UP 和 EXEC 沒有使用相同的(默認?)容器名稱。

Al-waleed Shihadeh 要求提供更多信息(謝謝!!!!)。 所以....

我的 docker-compose.yml 文件:

version: '3.7'
services:
    python-base-srv:
        build:
            context: ./images/python-base
            dockerfile: Dockerfile-PythonBase
        image: mycompany/builds-win-base-python:3.7.6
        volumes:
        - ../../..:C:/bldroot
        command: powershell -NoExit -NonInteractive

    msbuild-srv:
        build:
            context: ./images/msbuild
            dockerfile: Dockerfile-msbuild
        image: mycompany/builds-win-msbuild:15.0
        volumes: 
        - ../../..:C:/bldroot
        depends_on: 
        - python-base-srv
        command: powershell -NoExit -NonInteractive

Dockerfile-msbuild:

# escape=`

ARG FROM_IMAGE=mycompany/builds-win-base-python

FROM ${FROM_IMAGE} AS build
    SHELL [ "powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';" ]

    RUN Invoke-WebRequest 'https://aka.ms/vs/15/release/vs_buildtools.exe' -OutFile C:\Downloads\vs_buildtools.exe -UseBasicParsing ; `
        Start-Process -FilePath 'C:\Downloads\vs_buildtools.exe' -Wait `
          -ArgumentList `
            '--quiet', `
            '--norestart', `
            '--locale en-US', `
            '--installPath C:\BuildTools', `
            '--nocache', `
            '--addProductLang en-US', `
            '--add Microsoft.Net.Component.3.5.DeveloperTools', `
            '--add Microsoft.Net.Component.4.5.TargetingPack', `
            '--add Microsoft.Net.ComponentGroup.4.6.1.DeveloperTools', `
            '--add Microsoft.Net.ComponentGroup.4.6.2.DeveloperTools', `
            '--add Microsoft.Net.ComponentGroup.TargetingPacks.Common', `
            '--add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.WinXP' ; `
        Remove-Item c:\Downloads\vs_buildtools.exe -Force

    RUN $PATH = $env:PATH + ';C:\BuildTools\MSBuild\15.0\Bin' ; `
        Set-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH -Value $PATH

    # Start developer command prompt before running the specified command (from RUN/EXEC commandline)
    COPY ["VsDevCmdPowerShell.bat", "C:\\BuildTools\\"]
    ENTRYPOINT ["cmd", "/k", "C:\\BuildTools\\VsDevCmdPowerShell.bat"]

Dockerfile-PythonBase:

# escape=`

ARG FROM_IMAGE=mcr.microsoft.com/windows/servercore:ltsc2019

FROM ${FROM_IMAGE} AS python-base
    SHELL [ "powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';" ]
    RUN `
        New-Item -Path C:\Downloads -ItemType Directory ; `
        New-Item -Path C:\path -ItemType Directory ; `
        `
        $PATH = 'C:\path;' + $env:PATH ; `
        Set-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH -Value $PATH ; `
        `
        Invoke-WebRequest 'https://www.python.org/ftp/python/3.7.6/python-3.7.6.exe' -OutFile c:\Downloads\python-installer.exe -UseBasicParsing ; `
        Start-Process c:\Downloads\python-installer.exe -ArgumentList '/quiet InstallAllUsers=1 PrependPath=1' -Wait ; `
        Remove-Item c:\Downloads\python-installer.exe -Force

CMD ["powershell", "-NoExit", "-NoLogo", "cmd", "/c ver", ";", "python", "--version", ";", "nuget", "help | select -First 1", ";"]

輸出:

C:\work\docker> docker-compose up -dV msbuild-srv
Recreating docker_python-base-srv_1 ... done
Recreating docker_msbuild-srv_1     ... done

C:\work\docker> docker-compose ps
          Name                        Command               State    Ports
--------------------------------------------------------------------------
docker_msbuild-srv_1       cmd /k C:\BuildTools\VsDev ...   Exit 0
docker_python-base-srv_1   powershell -NoExit -NonInt ...   Exit 0

C:\work\docker> docker logs docker_msbuild-srv_1

Call VsDevCmd.bat to setup environment . . .

C:\>call C:\BuildTools\Common7\Tools\VsDevCmd.bat
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.0
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************

powershell -NoExit -NonInteractive
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\>

C:\>
C:\work\docker>

所以 - 它不會像它應該的那樣讓容器在 compose UP 步驟中運行。

docker container run -it --name msbuildTesting -v C:/work:C:/bldroot -wc:\\bldroot\\build mycompany/builds-win-msbuild

似乎您的容器在docker-compose up之后直接退出,您可以通過發出這些命令來驗證這一點

docker-compose ps 

或者

docker ps -a

您還可以通過檢查日志來檢查容器退出的原因

docker logs ${container_name}

注意: 1. 你應該使用這個命令連接到容器docker-compose exec msbuild ${command}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM