转换为docker-compose后,Docker卷不会保留数据

问题描述 投票:0回答:1

我正在使用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初始化我的数据库,然后使用该持久存储。谢谢你的回答。

postgresql docker docker-compose
1个回答
0
投票

在我的dockerized Postgresql中有一个数据卷我绑定到/ var / lib / postgresql而不是/ var / lib / postgres / data。尝试将撰写文件更改为

volumes:
       - db-data:/var/lib/postgresql
© www.soinside.com 2019 - 2024. All rights reserved.