出于测试目的,我使用停靠容器来运行postgres,它不应该在不同的运行之间持久化数据。
这是dockerfile:
FROM postgres:alpine
ENV POSTGRES_PASSWORD=1234
EXPOSE 5432
这是我的作文文件:
version: "3.9"
services:
web:
build:
context: ../../.
dockerfile: ./services/web/Dockerfile
ports:
- "3000:3000"
db:
build: ../db
ports:
- "5438:5432"
graphql:
build:
context: ../../.
dockerfile: ./services/graphql/Dockerfile
ports:
- "4000:4000"
indexer:
build:
context: ../../.
dockerfile: ./services/indexer-ts/Dockerfile
volumes:
- ~/.aws/:/root/.aws:ro
然而,我发现在会话之间所有数据都是持久化的,我不知道为什么。这完全扰乱了我的测试,预计不会发生。
即使在运行docker system prune之后,所有数据仍保持不变,这意味着容器可能正在以某种方式使用卷
有谁知道为什么会发生这种情况,以及如何不将数据持久化?
2条答案
按热度按时间t30tvxxf1#
当您通过键入
CTRL-C
或类似命令停止docker-compose
环境时,如果配置没有更改,则下次运行docker-compose up
时,它将重新启动相同的容器。因此,即使没有卷,以前存在的任何数据也将继续存在。为了确保您从新容器开始,请始终运行:
如果您在配置中定义了显式卷,则添加
-v
也会删除这些卷:(在这种情况下,这不是必要的。)
与您的问题无关,但您为什么要构建一个定制的postgres映像?您只需在
docker-compose.yaml
文件中进行设置:(然后在
.env
文件中设置POSTGRES_PASSWORD
。)xoefb8l82#
您说得对,它使用的是卷。
您可以使用
-v
开关来清理: