簡體   English   中英

Docker-compose 單個主機上的多個實例

[英]Docker-compose multiple instances on a single host machine

這就是我的 docker 文件的樣子

version: "3"
services:
  controller:
    build: ./cd_controller
    image: cd_controller:latest
    env_file: $PWD/robot-configurations/.env
    cap_add:
      - ALL
    links:
      - test_fixture
    volumes:
      - dependencypackages:/root/dependency-packages
      - robotconfigurations:/root/robot-configurations
    container_name: controller_g5
  test_fixture:
    image: docker-standard-all.ur-update.dk/ur/pytest-ur:0.7.1
    volumes:
      - pytestfixture:/workspace
      - controllertests:/workspace/controller-tests
    entrypoint: /workspace/entrypoint.sh
    container_name: test_fixture
    stdin_open: true # docker run -i
    tty: true        # docker run -t
volumes:
  robotconfigurations:
    driver_opts:
      type: none
      device: $PWD/robot-configurations
      o: bind
  ...

基本上它有兩個服務/容器控制器和test_fixture。 controller 有源代碼正在運行,test_fixture 包含所有的 test_cases。 test_fixture 需要通過套接字與 controller 對話。 由於 docker-compose 在其容器之間創建了一個網絡,因此在我的 py 測試用例中,我只是使用

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("controller_g5", 30001)) # controller_g5 is name of the controller container 

到目前為止,一切看起來都很好。 但我意識到我有多個版本/功能的源代碼。 所以我想創建一個相同事物的多個實例,每個實例都有自己的網絡。 命名容器是否會阻止在不同網絡中創建具有相同名稱的容器? 此外,我不確定如何在同一台主機上使用類似容器啟動另一個網絡。 在單個主機上遇到了多個隔離環境但無法獲得示例示例。

任何幫助是極大的贊賞。

您只需要使用不同的項目名稱。 默認情況下,compose 使用項目所在的目錄名稱作為項目名稱。 docker-compose 負責為每個項目適當地設置隔離網絡。

要創建命名空間為“dev”和“test”的項目的兩個實例,您可以按如下方式運行它:

docker-compose -p dev up

docker-compose -p test up 

來自https://docs.docker.com/compose/reference/overview/

-p, --project-name NAME     Specify an alternate project name
                              (default: directory name)

您需要刪除container_name字段才能使多個項目實例正常工作。 Compose 會自動在容器名稱前面加上項目名稱,但如果指定了container_name ,它將不會這樣做。 如果使用了container_name ,則在從 compose 文件啟動另一個項目時會出現容器名稱沖突。 刪除container_name后,您的服務將獲得服務名稱作為主機名。

暫無
暫無

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

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