簡體   English   中英

docker-compose 使用獨特的環境變量進行縮放

[英]docker-compose scaling with unique environment variable

我的 docker-compose 文件中有一個示例計算服務,它按預期工作得很好。

version: "3"
services:
  compute-service:
    image: dummy/compute
    environment:
      - INPUT=2

但是,有時我需要使用差異輸入運行此服務(比如 INPUT = 4、7、9、10、12.. 等)。 我不喜歡為每個輸入多次復制和粘貼服務的想法。 縮放是一種選擇。 但是我如何確保每個實例都適用於唯一的輸入變量。


我知道我可以使用這樣的 env 變量。 我的問題與如何在縮放過程中傳遞唯一值有關!!

version: "3"
services:
  compute-service:
    image: dummy/compute
    environment:
      - INPUT=${INPUT}

使用docker-compose我不相信有任何支持 但是,使用可以使用類似撰寫文件的 swarm 模式,您可以使用服務模板{{.Task.Slot}}作為環境變量傳遞。 您可以使用docker swarm init部署單節點 swarm 集群。 我使用docker stack deploy -c docker-compose.yml test部署以下示例,而不是docker-compose up

這是使用{{.Task.Slot}}功能的示例 docker-compose.yml 文件:

version: '3'
services:
  test:
    image: busybox
    command: /bin/sh -c "echo My task number is $$task_id && tail -f /dev/null"
    environment:
      task_id: "{{.Task.Slot}}"
    deploy:
      replicas: 5

然后,查看每個正在運行的容器:

$ docker ps --filter label=com.docker.swarm.service.name=test_test
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
ccd0dbebbcbe        busybox:latest      "/bin/sh -c 'echo My…"   About a minute ago   Up About a minute                       test_test.3.i3jg6qrg09wjmntq1q17690q4
bfaa22fa3342        busybox:latest      "/bin/sh -c 'echo My…"   About a minute ago   Up About a minute                       test_test.5.iur5kg6o3hn5wpmudmbx3gvy1
a372c0ce39a2        busybox:latest      "/bin/sh -c 'echo My…"   About a minute ago   Up About a minute                       test_test.4.rzmhyjnjk00qfs0ljpfyyjz73
0b47d19224f6        busybox:latest      "/bin/sh -c 'echo My…"   About a minute ago   Up About a minute                       test_test.1.tm97lz6dqmhl80dam6bsuvc8j
c968cb5dbb5f        busybox:latest      "/bin/sh -c 'echo My…"   About a minute ago   Up About a minute                       test_test.2.757e8evknx745120ih5lmhk34

$ docker ps --filter label=com.docker.swarm.service.name=test_test -q | xargs -n 1 docker logs
My task number is 3
My task number is 5
My task number is 4
My task number is 1
My task number is 2

我只需要使用存儲在.env文件中的環境變量,即可在容器每次啟動時以BASH遞增.env文件中的INPUT

version: "3"
services:
  compute-service:
    image: dummy/compute
    environment:
      - INPUT=${INPUT}

要找到最后一個輸入,您只需要在增加.env文件之前先閱讀它即可

暫無
暫無

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

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