如何更改主机上的docker卷地址
我在docker compose文件中动态创建docker卷。因此,它总是在主机上的如何更改主机上的docker卷地址,docker,docker-compose,Docker,Docker Compose,我在docker compose文件中动态创建docker卷。因此,它总是在主机上的var/lib/docker/volumes/volumes\u name/\u data处创建卷。我需要知道1)如何在docker compose文件中更改此地址?2) 例如,如何从.env文件中读取卷名 version: "3.5" services: service1: image: ... container_name: $CONTAINER_NAME env_file: .
var/lib/docker/volumes/volumes\u name/\u data
处创建卷。我需要知道1)如何在docker compose文件中更改此地址?2) 例如,如何从.env
文件中读取卷名
version: "3.5"
services:
service1:
image: ...
container_name: $CONTAINER_NAME
env_file: ./.env
ports:
- "$HOSTPORT:5000"
environment:
- JAVA_HOME=/usr/lib/jvm/java
volumes:
- $VOL_NAME:/tmp
volumes:
$VOL_NAME:
external: true
我问第二个问题的原因是卷的名称显然无法参数化。要从
.env
文件中读取卷名,您需要在服务中指定env\u文件
见下例:
version: '3.1'
services:
nginx:
env_file: .env
image: nginx:alpine
volumes:
- $VAR:/var/www/develop
测试步骤:
Users-MacBook-Pro:voltest myuser$ ls -la
total 16
drwxr-xr-x 5 myuser staff 160 12 Sep 15:06 .
drwxr-xr-x 38 myuser staff 1216 12 Sep 15:03 ..
-rw-r--r-- 1 myuser staff 17 12 Sep 15:04 .env
-rw-r--r-- 1 myuser staff 120 12 Sep 15:04 docker-compose.yml
drwxr-xr-x 3 myuser staff 96 12 Sep 15:04 testfolder
Users-MacBook-Pro:voltest myuser$ ls -la testfolder/
total 0
drwxr-xr-x 3 myuser staff 96 12 Sep 15:04 .
drwxr-xr-x 5 myuser staff 160 12 Sep 15:06 ..
-rw-r--r-- 1 myuser staff 0 12 Sep 15:04 testfile
Users-MacBook-Pro:voltest myuser$ cat docker-compose.yml
version: '3.1'
services:
nginx:
env_file: .env
image: nginx:alpine
volumes:
- $VAR:/var/www/develop
Users-MacBook-Pro:voltest myuser$ cat .env
VAR=./testfolder
Users-MacBook-Pro:voltest myuser$ docker-compose exec nginx ls -la /var/www/develop/
total 4
drwxr-xr-x 3 root root 96 Sep 12 19:04 .
drwxr-xr-x 3 root root 4096 Sep 12 19:04 ..
-rw-r--r-- 1 root root 0 Sep 12 19:04 testfile
编辑:在评论中来回一些之后。
您发布的配置无法与命名卷一起使用,因为.env
文件将仅替换服务
下的变量
相反,我建议安装文件系统卷。下面的示例将使用相对路径,但也可以使用绝对路径
文件/文件夹:
testfolder1/
testfile1.txt
testfolder2/
testfile2.txt
.env
docker-compose.yml
docker-compose.yml
version: '3.1'
services:
nginx:
env_file: .env
image: nginx:alpine
volumes:
- $VAR:/var/www/develop
环境署署长
这将使用testfile2.txt
装载/testfolder2
,您是否阅读了Docker文档中如何使用.env文件?我有相同的结构,$VOL_NAME的值类似于'ABCD',但它给我以下错误消息:错误:撰写文件'/./Docker Compose.yaml'无效,因为:不允许卷值附加属性($VOL_NAME'是意外的)你能给我看一下你的全部配置(编辑你的帖子)吗?您是否使用较旧的docker compose版本?您从哪里启动docker compose?//docker-compose.yaml
参考似乎有些奇怪。我刚刚用docker-compose文件更新了我的原始帖子,我使用的是v1.18.0Oh好的,所以不太一样。env_文件
是在服务级别设置的,因此卷定义似乎没有从.env
文件接收值。您能解释一下吗,我不太明白。我应该换什么?
VAR=./testfolder2