Aka*_*are 0 docker docker-compose docker-volume
我在 docker-compose.yml 中定义了两项服务,每一项都使用自己的命名卷。
这些卷不是预先创建的。我希望 docker 在容器首次启动后创建卷,并在以后的启动中重复使用相同的卷。
docker-compose.yml
version: '2'
services:
db:
container_name: db
environment:
POSTGRES_DB=new_db_name
volumes:
- pgdata:/var/lib/postgresql/data
app:
container_name: app
depends_on:
- db
volumes:
- appdata:/app/data
volumes:
pgdata
appdata
Run Code Online (Sandbox Code Playgroud)
但是,执行 docker-compose up 命令后,docker 会将当前目录名称添加到卷中。
我希望 docker 将 docker-compose yml 中指定的确切名称分配给卷。
我在这里找到了一个解决方案:https ://stackoverflow.com/a/59066462/12496407
但是,我无法应用上述解决方案,因为我的 docker-compose.yml 中有多个卷,并且提到的解决方案仅考虑一个卷。
从 3.4 版本开始,卷的名称可以在 docker-compose 文件中指定,如下所示:
version: "3.9"
volumes:
data:
name: my-app-data
Run Code Online (Sandbox Code Playgroud)
该名称将按原样使用。有关更多信息,请查看此文档。
所以,你的 docker-compose 应该是这样的:
# Make sure that the version is from 3.4
version: '3.9'
services:
db:
container_name: db
environment: POSTGRES_DB=new_db_name
volumes:
- 'pgdata:/var/lib/postgresql/data'
app:
container_name: app
depends_on:
- db
volumes:
- 'appdata:/app/data'
volumes:
pgdata:
name: my-pgdata # Set volume name
appdata:
name: my-appdata # Set volume name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1389 次 |
| 最近记录: |