【问题标题】:Docker volume doesn't keep data after turned docker-compose down关闭 docker-compose 后,Docker 卷不保留数据
【发布时间】:2018-07-04 10:15:42
【问题描述】:

我正在使用 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】:

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

    volumes:
           - db-data:/var/lib/postgresql
    

    【讨论】:

      猜你喜欢
      • 2019-09-04
      • 1970-01-01
      • 2020-07-15
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-08
      相关资源
      最近更新 更多