一千萬個為什麽

搜索

如何處理docker compose命名卷的命名約定


docker-compose.yml 中定義命名卷時,它們的名稱會與它們的父文件夾名稱一起添加。當Docker組合之外的腳本必須與它們交互時,這會導致問題。問題是,處理這個問題的最好方法是什麽?

示例場景將包括以下 docker-compose.yml

version: "3"
services:
  nginx:
    build: ./nginx
    container_name: nginx
    ports:
      - "80:80"
    volumes:
      - jekyll-data:/usr/share/nginx/html:ro

networks:
  backend:

volumes:
  jekyll-data:

其中 jekyll-data 命名的卷由以下bash腳本填充:

docker run \
  --name helper \
  --volume="parent_folder_jekyll-data:/web" \
  -it busybox \
  true
docker cp jekyll/web/. helper:/web
docker rm helper

在上述情況下, parent_folder 是父文件夾的名稱。這意味著將內容移動到其他文件夾會破壞應用程序。有沒有適當的方法來處理這種情況?

已刪除未命名卷的 docker volume ls 的縮寫輸出:

DRIVER              VOLUME NAME
local               flaskthymedata_grafana-data
local               flaskthymedata_influxdb-data
local               flaskthymedata_postgres-data
local               veleda_grafana-data
local               veleda_influxdb-data
local               veleda_jekyll-cache
local               veleda_jekyll-data
local               veleda_postgres-data
local               veledaio_grafana-data
local               veledaio_influxdb-data
local               veledaio_jekyll-cache
local               veledaio_jekyll-data
local               veledaio_postgres-data

最佳答案

What about creating docker volumes yourself instead of letting docker to that for you? https://docs.docker.com/engine/reference/commandline/volume_create/

如果您自己創建碼頭卷,則父文件夾不會自動連接。

轉載註明原文: 如何處理docker compose命名卷的命名約定

猜你喜歡