更改卷源路径

问题描述 投票:0回答:1

这个 dockerfile 按预期工作。但问题是我无法更改音量来源。

version: "3.5"
services:
  mysql:
    environment:
      MYSQL_ROOT_PASSWORD: india3391
    image: shantanuo/mysql:5.7
    ports:
    - mode: ingress
      target: 3306
      published: 3391
      protocol: tcp
    volumes:
    - type: volume
      source: dbvol
      target: /var/lib/mysql
volumes:
  dbvol: {}

似乎在默认的docker安装中创建了一个directory_name + volume_name文件夹,如下所示......

"Source": "/var/lib/docker/volumes/hashi1_dbvol/_data",

有办法改变这条路径吗?


更新:

# cat docker-compose.yml
version: "3.5"
services:
  mysql:
    environment:
      MYSQL_ROOT_PASSWORD: india3391
    image: shantanuo/mysql:5.7
    ports:
    - mode: ingress
      target: 3306
      published: 3391
      protocol: tcp
    volumes:
    - type: volume
      source: dbdata
      target: /var/lib/mysql

volumes:
  dbdata:
    driver: local
    driver_opts:
      type: 'none'
      o: 'bind'
      device: '/srv4/db-data'

此撰写文件仅在我首先创建挂载目录时才有效

mkdir -p /srv4/db-data

docker run 命令的卷参数将动态创建此目录。 为什么 docker compose 无法创建目录?

docker docker-compose docker-volume
1个回答
0
投票

出于安全原因,Docker Compose 不会自动允许为绑定挂载自动创建主机级目录。

Docker Compose 尝试强制执行显式配置,并希望用户创建目录。

有两种方法可以实现它。

  1. 在运行 docker-compose 命令之前手动创建目录
  2. 更好的方法,使用入口点脚本来处理它

入口点.sh

#!/bin/bash
mkdir -p /srv4/db-data
docker-compose up -d
© www.soinside.com 2019 - 2024. All rights reserved.