小艇重启后数据丢失(postgres 容器)
Data lost after dinghy restart (postgres container)
我正在使用这个 docker-compose.yml
创建一个容器
postgresdb:
container_name: "postgresdb"
image: "postgres:9.5"
volumes:
- "/var/docker/data/postgresdb:/var/lib/postgresql/data"
ports:
- "5432:5432"
environment:
VIRTUAL_HOST: "postgresdb.docker"
VIRTUAL_PORT: "5432"
POSTGRES_DB: "dev"
在 运行 我第一次使用我的容器后,我在我的数据库中创建了一些表。
之后我停下我的容器并停止小艇(小艇停止)。
之后我开始小艇(小艇向上)并启动 postgres 容器。
现在桌子都不见了。
我检查了里面 dinghy vm
并且安装的卷在那里。
版本
Macbook pro
Dinghy 4.3.1
docker-machine version 0.6.0, build e27fb87
docker-compose version 1.6.2, build 4d72027
Virtualbox 5.0.16 r105871 (with the latest extension pack)
Docker version 1.10.3, build 20f81dd
当我从 docker-compose.yml
中删除安装的卷并重新启动 dinghy
时,它按预期工作。当然,如果我删除预期的容器,数据将会丢失。
所以问题仍然是挂载的卷。也许已安装卷的 api 已更改?我已经了解了新的做事方式,但这不是应该向后兼容吗?
https://github.com/codekitchen/dinghy/issues/162
This isn't unique to dinghy, it's due to docker-machine using a root
volume that isn't persisted across reboots. I'd recommend using a
named volume if you want the data to persist, rather than a hard-coded
path inside the linux VM. For instance:
volumes:
- "mydatavol:/var/lib/postgresql/data"
我正在使用这个 docker-compose.yml
postgresdb:
container_name: "postgresdb"
image: "postgres:9.5"
volumes:
- "/var/docker/data/postgresdb:/var/lib/postgresql/data"
ports:
- "5432:5432"
environment:
VIRTUAL_HOST: "postgresdb.docker"
VIRTUAL_PORT: "5432"
POSTGRES_DB: "dev"
在 运行 我第一次使用我的容器后,我在我的数据库中创建了一些表。 之后我停下我的容器并停止小艇(小艇停止)。 之后我开始小艇(小艇向上)并启动 postgres 容器。 现在桌子都不见了。
我检查了里面 dinghy vm
并且安装的卷在那里。
版本
Macbook pro
Dinghy 4.3.1
docker-machine version 0.6.0, build e27fb87
docker-compose version 1.6.2, build 4d72027
Virtualbox 5.0.16 r105871 (with the latest extension pack)
Docker version 1.10.3, build 20f81dd
当我从 docker-compose.yml
中删除安装的卷并重新启动 dinghy
时,它按预期工作。当然,如果我删除预期的容器,数据将会丢失。
所以问题仍然是挂载的卷。也许已安装卷的 api 已更改?我已经了解了新的做事方式,但这不是应该向后兼容吗?
https://github.com/codekitchen/dinghy/issues/162
This isn't unique to dinghy, it's due to docker-machine using a root volume that isn't persisted across reboots. I'd recommend using a named volume if you want the data to persist, rather than a hard-coded path inside the linux VM. For instance:
volumes:
- "mydatavol:/var/lib/postgresql/data"