Docker撰写安装卷不起作用

时间:2020-01-19 07:21:53

标签: python postgresql docker docker-compose

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": ""
            }
        ],

我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

/vol/db设置为PGDATA环境变量或将卷路径更改为/var/lib/postgresql/data,因为postgres的默认数据文件位于/var/lib/postgresql/datahttps://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