Postgresql Docker compose fiware WireCloud数据持久性未从卷加载
我正在为FiWare WireCloud使用docker容器。它工作正常,但当我使用docker compose down停止容器,并使用docker compose up重新启动容器时,即使我为postgresql数据库指定了一个卷,我的所有数据都将被擦除,并且出现以下错误:Postgresql Docker compose fiware WireCloud数据持久性未从卷加载,postgresql,docker-compose,fiware,fiware-wirecloud,Postgresql,Docker Compose,Fiware,Fiware Wirecloud,我正在为FiWare WireCloud使用docker容器。它工作正常,但当我使用docker compose down停止容器,并使用docker compose up重新启动容器时,即使我为postgresql数据库指定了一个卷,我的所有数据都将被擦除,并且出现以下错误: ERROR: relation "wirecloud_workspace" does not exist at character 370 如果我想让它再次工作,我必须从头开始重新创建整个数据库(initdb&cre
ERROR: relation "wirecloud_workspace" does not exist at character 370
如果我想让它再次工作,我必须从头开始重新创建整个数据库(initdb&createsuperuser)
我想做的是能够将我的wirecloud数据保存在一个卷中,并能够备份和重新加载它。这是我当前版本3中的docker-compose.yml文件:
version: '3.3'
services:
iot-mongo:
image: mongo:3.2
ports:
- "27017:27017"
volumes:
- ./data/mongo:/data/db
orion:
image: fiware/orion:1.9.0
links:
- iot-mongo
ports:
- "1026:1026"
command: -dbhost iot-mongo
nginx:
restart: always
image: nginx:1.13
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./nginx/sites-available:/etc/nginx/sites-available
- ./letsencrypt/well-known:/www/letsencrypt
- /etc/letsencrypt/:/etc/letsencrypt/
- wirecloudwww:/var/www/static
- wirecloudinstance:/opt/wirecloud_instance
links:
- wirecloud:wirecloud
- orion:orion
postgres:
restart: always
image: postgres:latest
ports:
- "5432:5432"
volumes:
- postgresdata:/var/lib/postgresql
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD:
POSTGRES_DB: postgres
PGDATA: /tmp
wirecloud:
restart: always
image: fiware/wirecloud:1.0-composable
links:
- postgres:postgres
volumes:
- wirecloudwww:/var/www/static
- wirecloudinstance:/opt/wirecloud_instance
volumes:
wirecloudwww: {}
wirecloudinstance: {}
postgresdata: {}
我还尝试了docker compose v1,如中所示,但结果是一样的。问题在于postgres卷和
PGDATA
环境变量的定义。PGDATA
环境告诉PostgreSQL在/tmp
中存储数据,因此它不会在de卷中存储数据(您可以在/tmp
上创建卷,但这似乎有点奇怪)。如果删除PGDATA
环境变量,postgres将把数据存储到/var/lib/postgresql/data
中。将此定义用于postgres服务应该可以做到:
postgres:
restart: always
image: postgres:latest
ports:
- "5432:5432"
volumes:
- postgresdata:/var/lib/postgresql/data
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD:
POSTGRES_DB: postgres