转换为docker-compose后,Docker卷不会保留数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转换为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
以上是关于转换为docker-compose后,Docker卷不会保留数据的主要内容,如果未能解决你的问题,请参考以下文章
如何将docker-compose.yml转换为Dockerfile
带有 django 的 Docker-compose 无法将主机名“db”转换为地址:名称或服务未知
Docker-compose + Nginx SSL反向代理
Docker-compose up 在本地完美运行,但在 gcp 上出现错误无法将主机名 db 转换为地址:名称解析中的临时故障