在docker-compose down
而非-v或--volume之后,
并重建docker-compose up -d --build
新的PostgreSQL容器中没有数据。
奇怪的是,正如您所见,我有另一个卷persistent_vol,它运行良好。
这是我的docker-compose.yml
# the version of Docker-compose
version: "3"
services:
app:
build:
context: .
ports:
- "8000:8000"
volumes:
- ./app:/app
- persistent_vol:/vol/web
command: >
sh -c "python manage.py runserver 0.0.0.0:8000"
environment:
- DB_HOST=db
- DB_NAME=americanos
- DB_USER=postgres
- DB_PASS=supersecretpassword
depends_on:
- db
db:
image: postgres:11-alpine
volumes:
- db_vol:/vol/db
environment:
- POSTGRES_DB=americanos
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=supersecretpassword
volumes:
persistent_vol:
db_vol:
这是检查db docker容器。
"Mounts": [
{
"Type": "volume",
"Name": "americanos-project_db_vol",
"Source": "/var/lib/docker/volumes/americanos-project_db_vol/_data",
"Destination": "/vol/db",
"Driver": "local",
"Mode": "rw",
"RW": true,
"Propagation": ""
},
{
"Type": "volume",
"Name": "27b655ba943c50d63af79584f764bd3944b0918ceb299621a5f0e80562fc9638",
"Source": "/var/lib/docker/volumes/27b655ba943c50d63af79584f764bd3944b0918ceb299621a5f0e80562fc9638/_data",
"Destination": "/var/lib/postgresql/data",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
我错过了什么吗?
答案 0 :(得分:2)
将/vol/db
设置为PGDATA
环境变量或将卷路径更改为/var/lib/postgresql/data
,因为postgres的默认数据文件位于/var/lib/postgresql/data
。
https://hub.docker.com/_/postgres
db:
image: postgres:11-alpine
volumes:
- db_vol:/vol/db
environment:
- POSTGRES_DB=americanos
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=supersecretpassword
- PGDATA=/vol/db # added
或
db:
image: postgres:11-alpine
volumes:
- db_vol:/var/lib/postgresql/data # changed
environment:
- POSTGRES_DB=americanos
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=supersecretpassword