【发布时间】:2021-09-21 13:05:05
【问题描述】:
我已经在 ubuntu 上的 docker 上设置了一个 Postgres 数据库,其中 docker-compose.yml 仅用于文件夹 ~/postgres 中的该数据库,我将运行 docker-compose up -d 以从 ~/postgres 文件夹中运行我的数据库.
这是我的docker-compose.yml:
version: '3'
services:
database:
image: "postgres"
ports:
- "0.0.0.0:5432:5432"
env_file:
- database.env
volumes:
- database-data:/var/lib/postgresql/data/
volumes:
database-data:
这个数据库已经设置好并且运行良好,所以我决定也设置我的 Web 应用程序,因为 docker-compose.yml 文件在那个文件夹中,我将它移到了 ~/ 之外,所以我可以将它用于我的网络应用程序也是如此。
这是~/ 中的docker-compose.yml 的样子:
version: "3"
services:
database:
image: "postgres"
ports:
- "0.0.0.0:5432:5432"
env_file:
- postgres/database.env
volumes:
- database-data:/var/lib/postgresql/data/
webapp:
image: webapp/site
build:
context: ./retro-search-engine
dockerfile: Dockerfile
args:
buildno: 1
links:
- "database:db"
ports:
- "0.0.0.0:8000:80"
volumes:
- webapp:/var/www
environment:
db_host: db
db_username: xxxx
db_password: xxxx
db_database: xxxx
db_port: 5432
volumes:
database-data:
webapp:
如您所见,数据库 docker 配置基本相同,唯一改变的是 database.env 文件的路径,因为它仍在之前的文件夹中。
所以,这里的问题是,当我从~/ 运行docker-compose up -d 时,一切正常启动,但是当我访问数据库时,我的所有表都消失了。
如果我返回~/postgres 并在该文件夹中执行docker-compose up -d(使用之前的docker-compose.yml)并连接到数据库,我可以访问我的表。
所以我认为正在发生的事情是它要么创建一个新容器,要么以某种方式存储数据的文件夹与docker-compose.yml 文件相关,并且它正在创建一个新数据库,因为它找不到旧文件。
我不知道如何解决这个问题,我用谷歌搜索并找不到任何东西,所以我决定在我转储我的整个数据库并将它恢复到一个我不想的新容器之前在这里询问这样做是因为它是一个 16gb 的数据库,而且需要很长时间。
有人知道如何将我的新 docker-compose.yml 与数据库中的数据一起使用吗?
提前致谢。
【问题讨论】:
标签: postgresql docker docker-compose