2017-03-12 54 views
8

我想在泊塢窗,compose.vs.debug.yml文件來創建網絡:泊塢窗撰寫 - 添加標識符網絡名稱

networks: 
    myNetwork: 
    driver: bridge 

但碼頭工人加入一些標識符:

泊塢窗網LS - >

NETWORK ID   NAME           DRIVER    SCOPE 
0e1fec1a9a30  dockercompose1163770330_myNetwork   bridge    local 

如果有任何選項來命名它是這樣的:

NETWORK ID   NAME           DRIVER    SCOPE 
0e1fec1a9a30  myNetwork         bridge    local 

我需要它在不同的項目上自動連接兩個容器。

回答

7

如果您有docker-compose創建網絡,它將確定名稱本身。通常,它會查看docker-compose.yml所在目錄的名稱,並將其用作前綴。根據您所顯示的名稱,看起來該docker-compose.yml文件位於名爲dockercompose1163770330的目錄中。它將它與您指定的名稱myNetwork相結合,並創建一個名爲dockercompose1163770330_myNetwork的網絡。

如果你想控制網絡的確切名稱,你有兩個選擇。

  1. 使用在docker-compose之外創建的網絡(「外部」網絡)。
networks: 
    default: 
    external: 
     name: myNetwork 

這意味着別的東西已經創建的網絡了。如果你還沒有這樣的網絡,創建它很容易。

docker network create myNetwork 
  • (如果可能的話)確定工作室視覺如何將其命名爲路徑,並且更改爲靜態該路徑。不管這是可能的,還是如何,我都不知道。但是,如果您可以控制dockercompose1163770330並使其更喜歡不同,那麼您可以預測從中創建的網絡名稱。
  • +0

    謝謝你的回答,但如果網絡不存在而不使用cmd,我想從代碼(從docker-compose.vs.yml文件)自動創建網絡。選項與外部作品只有完整的網絡名稱:dockercompose1163770330_myNetwork,我不能相信這個名字將是相同的,因爲標識符 –

    +0

    @MarkSabakov它應該創建它的基礎上找到它的目錄。我猜這個標識符是來自其他工具(例如您標記的VS2017或其他)。 docker-compose自己從存儲目錄的名稱中獲取該名稱。 –

    +0

    @MarkSabakov [Docker Compose無法創建網絡](https://github.com/docker/compose/issues/2846)。 – Matt

    2

    我假設你使用VS2017 dcproj。我通過在dcproj項目中手動創建網絡作爲PreBuildEvent來解決此問題。一個預生成目標添加到.dcproj文件:

    <Target Name="PreBuild" BeforeTargets="PreBuildEvent"> 
        <Exec Command="echo Creating external docker network" /> 
        <Exec Command="docker network create customnetwork" IgnoreExitCode="true" /> 
    </Target> 
    

    然後在你的搬運工,撰寫文件,你可以指定一個外部網絡:

    networks: 
        default: 
        external: 
         name: customnetwork 
    

    需要你之前的其他項目開始dcproj或添加同樣的prebuild exec到所有應該共享網絡的項目。