这个 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 Compose 不会自动允许为绑定挂载自动创建主机级目录。
Docker Compose 尝试强制执行显式配置,并希望用户创建目录。
有两种方法可以实现它。
入口点.sh
#!/bin/bash
mkdir -p /srv4/db-data
docker-compose up -d