我可以使用Docker compose脚本运行timescaledb数据库:
version: "3.9"
services:
timescaledb:
image: timescale/timescaledb:latest-pg12
restart: always
ports:
- 5432:5432
environment:
TIMESCALEDB_TELEMETRY: off
POSTGRES_USER: timescaledb
POSTGRES_PASSWORD: password
然而,存储在这里的数据不是持久性的。所以当我重置电脑时,我就失去了一切。我试图通过将/var/lib/postgresql/data文件夹Map到我本地驱动器上的某个东西(在windows操作系统上)来使卷持久化。
version: "3.9"
services:
timescaledb:
image: timescale/timescaledb:latest-pg12
restart: always
ports:
- 5432:5432
environment:
TIMESCALEDB_TELEMETRY: off
POSTGRES_USER: timescaledb
POSTGRES_PASSWORD: password
volumes:
- postgresdata:/var/lib/postgresql/data
volumes:
postgresdata:
external: false
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: '/data/db-data'
我得到的错误虽然
“initdb:错误:目录“/var/lib/postgresql/data”存在但不为空如果要创建新的数据库系统,请删除或清空目录“/var/lib/postgresql/data”,或者使用“/var/lib/postgresql/data”以外的参数运行initdb
我可以看到(当我用非持久化数据运行容器的第一种方式时)在/var/lib/postgresql/data中包含了很多postgres文件。那么我的猜测是,在构建阶段/var/lib/postgresql/data被创建,并且我的volumes语句不允许覆盖所有这些数据。我不确定克服这一点的最佳方法。
那么,我如何让Docker compose与存储在主机上的卷协作呢?
1条答案
按热度按时间voase2hg1#
使用体积Map,如下所示
参考:https://docs.timescale.com/self-hosted/latest/install/installation-docker/#install-self-hosted-timescaledb-from-a-pre-built-container