Docker составьте монтажный объем не работает - PullRequest
2 голосов
/ 19 января 2020

После 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:

Это контейнер inpect 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 Ответ

2 голосов
/ 19 января 2020

Установите /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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...