我一直在使用主机目录作为postgresql容器的数据卷。我的docker-compose.yml
读的是这样的。
postgresql:
image: postgres
ports:
- "5432:5432"
container_name: postgresql
networks:
- mynet
volumes:
- pg-data:/var/lib/postgresql/data
volumes:
pg-data:
driver_opts:
type: none
device: /volumes/pgdata
o: bind
由于我们想要将所有数据合并到一个加密卷中,我决定重新映射此容器的卷。
volumes:
pg-data:
driver_opts:
type: none
device: /volumes/data/pgdata
o: bind
我知道我需要删除此图像的容器并重新创建图像。我删除了所有容器和图像。当我尝试重建(docker-compose up --build postgresql
)图像时,似乎docker-compose仍然在某处记住我的旧设置。我收到以下错误。
ERROR: for postgresql Cannot create container for service postgresql: error while mounting volume with options: type='none' device='/volumes/pgdata' o='bind': no such file or directory
它仍在尝试访问旧的卷定义,因为我的新docker-compose.yml
没有引用此目录。
感谢一些帮助来解决这个问题。我在这里错过了一些步骤吗?
答案 0 :(得分:1)
这在docker-compose中被证明是per this post的一个问题。这计划在下一版本中修复。同时,解决方法建议工作。
与此同时,你应该能够解决这个问题 删除现有卷(
docker volume rm -f <project>_pg-data
或docker-compose down -v
)