【发布时间】:2017-02-24 06:23:06
【问题描述】:
这是我的 docker compose 文件
version "2"
services:
my_postgres:
image: postgres:9.6
volumes:
- /Users/my_user_name/test_docker/my_volume_space:/var/lib/postgresql
ports:
- "5432:5432"
我在mac中输入了以下命令
docker-machine start
docker-machine env
evcal "$(docker-machine env default)"
docker-compose up
psql -h 192.168.99.100 -p 5432 -U postgres
create table test (my_id bigserial primary key);
INSERT INTO test (my_id) values (1);
SELECT * FROM test;
\q
本来我以为上面的命令会导致在主机的./my_volume_space中创建一个.sql文件。但我在./my_volume_space 中看不到任何.sql 文件,而在./my_volume_space 中只有一个空的data 目录
此外,如果我再次docker-compose down 和docker-compose up 可以看到我在数据库中的数据现在已经消失了。
我怀疑我在镜像运行时创建数据时,数据没有存储回./my_volume_space,因此当我重新启动时,主机上没有任何东西可以挂载。
谁能告诉我我做错了什么?
谢谢
【问题讨论】:
-
您是否检查过“同步”是否有效,例如通过附加到 my_postgres 容器并执行类似“touch /var/lib/postgresql/testfile.txt”之类的操作?如果它出现在您的主机中,那么该图像可能会将 pg 数据保存在其他地方,或者它还没有完成同步,因为使用 osxfs 在 mac 上安装 docker 卷真的很慢。我什至写了一篇关于这个的文章:espeo.eu/blog/docker-for-mac-performance-tweaks/
标签: postgresql docker containers docker-compose