Consider the following docker-compose
file
version: "2"
services:
postgres:
image: postgres:9.6
volumes:
- ./vol_folder:/var/lib/postgresql
ports:
- "5432:5432"
Here is my command history on my mac
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
Originally I thought the above commands will cause a .sql
file to be created in ./vol_folder
of the host computer. But I don't see any .sql
file in ./vol_folder
rather just an empty data
directory in ./vol_folder
Furthermore if I docker-compose down
and docker-compose up
again I can see my data in the database is now gone.
I suspected that when I created the data when the image is running, the data is not stored back to ./vol_folder
thus when I reboot, there is nothing to mount from the host.
So I guess my question is where is the volume stored in my host computer? Is docker volume only one way (eg. host data to container) not two way?