这是我的 docker 撰写文件
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
因此当我重新启动时,没有任何东西可以从主机装载。
有人可以告诉我我做错了什么吗?
谢谢
路径卷在带有 postgres 映像、源的 docker-machine (macOS) 上不起作用。
解决方法是使用命名卷。示例 docker-compose.yaml:
services:
test-postgres-compose :
...
volumes :
- pgdata:/var/lib/postgresql/data
...
volumes :
pgdata :
码头工人撰写卷信息
我相信容器上的卷路径是/var/lib/postgresql/data
而不是/var/lib/postgresql