Docker卷关闭后,Docker卷不保留数据 [英] Docker volume doesn't keep data after turned docker-compose down
问题描述
我正在使用docker compose合并2张图像(tomcat与我的应用程序和数据库-postgres)。
I am using docker compose to combine 2 images (tomcat with my app and database - 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:
and here is dockerfile for database image:
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开始我的容器
Next I started my containers with docker-compose cli docker-compose -f docker-compose.yml up
并运行psql工具
docker exec -it container_id psql -d xxxx -U xxxx
并插入新记录。之后,我检查是否确实存在:
and insert new record. After that I check if there really is:
select * from my_table;
之后,我尝试停止docker compose并使用以下命令删除容器:
After that I tried stopped docker compose and remove containers with:
docker-compose -f docker-compose.yml down
然后重新启动
docker-compose -f docker-compose.yml up
当我再次运行数据库容器的psql工具并在my_table中选择数据时,没有先前插入的记录...我要修理吗?我只需要一次用init-db.sql初始化数据库,然后使用该持久性存储。
when I run again psql tool of db container and select data in my_table, there is no previous inserted record ... Can you help me to fix it please? I need init my db with init-db.sql just once and next using that persist storage. Thanks for answers.
推荐答案
在带有数据量的Dockerized Postgresql中,我绑定到/ var / lib / postgresql而不是/ var / lib / postgres / data。尝试将撰写文件更改为
In my dockerized Postgresql with a data volume I am binding to /var/lib/postgresql and not to /var/lib/postgres/data. Try changing your compose file to
volumes:
- db-data:/var/lib/postgresql
这篇关于Docker卷关闭后,Docker卷不保留数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!