postgresql - 关闭 docker-compose 后,Docker 卷不保留数据
问题描述
我正在使用 docker compose 来组合 2 个图像(tomcat 与我的应用程序和数据库 - postgres)。
我的撰写文件如下所示:
version: '3'
services:
tomcat:
build: ./tomcat-img
ports:
- "8080:8080"
depends_on:
- "db"
db:
build: ./db-img
volumes:
- db-data:/var/lib/postgres/data
ports:
- "5433:5432"
volumes:
db-data:
这是数据库映像的 dockerfile:
FROM postgres:9.5-alpine
ENV POSTGRES_DB mydb
ENV POSTGRES_USER xxxx
ENV POSTGRES_PASSWORD xxxx
COPY init-db.sql /docker-entrypoint-initdb.d/
EXPOSE 5432
CMD ["postgres"]
接下来我使用 docker-compose cli 启动我的容器docker-compose -f docker-compose.yml up
并运行 psql 工具:
docker exec -it container_id psql -d xxxx -U xxxx
并插入新记录。之后,我检查是否真的存在:
select * from my_table;
之后,我尝试停止 docker compose 并删除容器:
docker-compose -f docker-compose.yml down
重新开始
docker-compose -f docker-compose.yml up
当我再次运行 db 容器的 psql 工具并在 my_table 中选择数据时,没有以前插入的记录......你能帮我修复它吗?我只需要一次使用 init-db.sql 初始化我的数据库,然后使用该持久存储。感谢您的回答。
解决方案
在我的带有数据卷的 dockerized Postgresql 中,我绑定到 /var/lib/postgresql 而不是 /var/lib/postgres/data。尝试将您的撰写文件更改为
volumes:
- db-data:/var/lib/postgresql
推荐阅读
- sql - 将 SQL 中带小数点时间戳的 17 位数字转换为日期
- python - 如何识别pandas python中的列值变化
- ios - '尝试将第 0 行插入第 0 节,但更新后第 0 节只有 0 行'
- reactjs - 组内的导入源必须按字母顺序排列。打字稿
- doctrine - Doctrine 多对一多目标实体
- c# - Blazor 项目中的反序列化问题
- android - 使用 If 条件测试来自 toast 消息
- windows - 威胁服务已停止
- javascript - 在 JavaScript 的 if 语句中使用不带括号的函数名有什么作用?
- macos - MTKView 委托停止响应 - (void)drawInMTKView:(nonnull MTKView *)view 调用