在 DigitalOcean 中使用 docker-compose 持久化数据库

问题描述

我正在 DigitalOcean Docker droplet 中运行一个 docker-compose 项目。

我也有一个持久卷。 它已安装在 /mnt/volume_fra1_01

在我的 docker-compose.yml 中,我定义了数据库的卷:

...

db:
    image: postgres:12.0-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    env_file:
      - ./postgres/.env

...

volumes:
  postgres_data:

...

我已经用 sudo ln -s /mnt/volume_fra1_01 postgres_data

创建了符号链接

但是我的数据库不是持久化的。当我清除容器时,数据库消失了。不知何故,/var/lib/postgresql/data/ 没有使用安装的卷。

解决方法

当你写这个时:

- postgres_data:/var/lib/postgresql/data/

postgres_data 是一个命名卷。不是本地文件夹。这是数字海洋告诉你的吗?

你可以试试这个吗:

- ./postgres_data:/var/lib/postgresql/data/
,

您能否尝试在没有符号链接的情况下配置您的卷:

volumes:
  - /mnt/volume_fra1_01:/var/lib/postgresql/data/

应该可以。