簡體   English   中英

讓 Docker Swarm 使用來自 Docker-Compose 的相同卷

[英]Make Docker Swarm use same volumes from Docker-Compose

我有一個包含一些服務docker-compose.yml文件:

version: '3'

services:
    # PostgreSQL
    db:
        image: postgres:12
        volumes:
            - postgres_data:/var/lib/postgresql/data/

    # MongoDB Server
    mongo:
        image: mongo:4.2
        volumes:
            - mongo_data:/data/db
            - mongo_data:/data/configdb

volumes:
    mongo_data:
    mongo_config:
    postgres_data:

我一直在生產中使用docker-compose up -d啟動服務。 但現在我想使用docker stack deploy --compose-file docker-compose.yml mystack來實現未來的可擴展性。

問題是這些服務現在正在使用卷。 所以我不能使用所有的數據庫數據。 我怎樣才能讓 Swarm 使用現有的docker-compose卷?

任何形式的幫助將非常感激。 提前致謝

正如 Kiryl 所指出的,答案是外部卷,但我在下面列出了幾個步驟:

  1. 檢查容器以獲取它們正在使用的卷並獲取它們的名稱。 這個答案表明了如何做到這一點。
  2. 編輯docker-compose.yml文件以添加具有現有* 卷名稱的external密鑰。 結果如下:
volumes:
    mongo_data:
        external:
            name: existing name...
    mongo_config:
        external:
            name: existing name...
    postgres_data:
        external:
            name: existing name...
  1. docker-compose up -d開始檢查所有卷是否正常。 然后用docker-compose down
  2. docker stack deploy --compose-file docker-compose.yml mystack

此外, 官方 Docker 論壇中也有同樣的問題,那里有其他有用的解決方案和意見。

考慮使用外部卷

暫無
暫無

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

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