【发布时间】:2016-08-28 20:05:45
【问题描述】:
我有一个多容器应用程序,它使用 docker-compose.yml 文件中的 postgres 图像。 Postgres 容器在主机上有卷用于持久存储。
当我第一次运行 docker-compose up 时,一切都很好,postgres 在我的主机文件夹中创建 db 文件。 之后,如果我要更改 Web 容器的代码,我需要使用 docker-compose down 暂时关闭应用程序。
当我第二次运行 docker-compose up 时,postgres 会覆盖所有 db 文件,但我需要这些数据不要更改。我该如何解决这个问题?
我的 docker-compose.yml
version: '2'
services:
web:
build: ./web
command: python3 main.py
volumes:
- ./web:/app
ports:
- "80:80"
depends_on:
- db
- redis
links:
- db:db
- redis:redis
db:
image: postgres
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD:0000
volumes:
- ./pgdb:/var/lib/postgresql/data
redis:
image: redis
ports:
- "6379:6379"
command: redis-server --appendonly yes
volumes:
- ./redisdb:/data
【问题讨论】:
-
我解决了这个问题。这可能是因为我使用主机 root 用户更改了 pgdb 目录的权限。默认情况下,我无法在主机中打开 pgdb,因为所有者是 postgres 用户。我可能是错的,但是在我停下来更改问题的解决方案之后就消失了。
-
为您自己的帖子添加答案,以便您可以关闭它。其他人可能对此解决方案感兴趣。
标签: postgresql docker docker-compose