сервис docker-compose без тома - PullRequest
       43

сервис docker-compose без тома

0 голосов
/ 28 октября 2019

У меня есть служба redis, определенная следующим образом в файле docker-compose.yml:

redis:
  container_name: redis
  image: redis
  ports:
    - "6379:6379"

Как видите, здесь не определено ни одного тома. Сохранится ли база данных redis между вызовами на docker run / docker-compose run? Я могу видеть некоторые данные в базе данных, когда использую docker run с redis-cli, поэтому мне интересно, откуда они берутся.

1 Ответ

1 голос
/ 28 октября 2019

Есть несколько вещей, которые могут происходить здесь.

Если вы неоднократно запускаете docker-compose up -d, он попытается сохранить существующие контейнеры живыми. Если вы находитесь в обычном цикле разработки и постоянно docker-compose stop app; docker-compose up --build -d, это только перезапустит остановленные контейнеры, поэтому в этой последовательности контейнер базы данных никогда не будет остановлен и вообще удален;у вас просто будет тот же контейнер базы данных.

Второе, что происходит, - это то, что Redis Dockerfile объявляет VOLUME /data. Если вы не укажете ничего для этого каталога с помощью объявления volumes:, Docker создаст анонимный том для этого каталога. Docker Compose будет отслеживать их, и анонимный том будет оставаться связанным с конкретной службой, пока вы явно не docker-compose down -v или не перезапустите службу с помощью docker-compose up --renew-anon-volumes.

...