docker громкость после загрузки на github? - PullRequest
0 голосов
/ 02 февраля 2020

enter image description here

Я использую docker и создал postgres db внутри контейнера (не на моем локальном компьютере). Это мой docker -compose.yml файл. Я перенес весь свой код на github и удалил свой код на своем ноутбуке. Но когда я клонирую это. База данных была удалена, и мне пришлось заново создать базу данных. Почему он был удален и что я должен сделать, чтобы БД существовала.

Спасибо

1 Ответ

0 голосов
/ 02 февраля 2020

Если вы удалили каталоги только с вашим кодом, скорее всего, том все еще существует.

При использовании docker-compose имя родительского каталога вашего docker-compose.yml будет добавлено к имени тома.

Таким образом, вы должны убедиться, что структура каталогов не изменится, если вы хотите повторно использовать старый том.

Например, используя следующий код docker-compose.yml:

version: "3"

services:
  db:
    image: postgres
    volumes:
      - postgres_data:/var/lib/postresql/data

volumes:
  postgres_data:

внутри каталога с именем postgres2342 приводит к:

~/workspace/teststuff/postgres2342$ docker-compose up
Creating network "postgres2342_default" with the default driver
Creating volume "postgres2342_postgres_data" with default driver
Pulling db (postgres:)...
latest: Pulling from library/postgres
8ec398bc0356: Pull complete
65a7b8e7c8f7: Pull complete
b7a5676ed96c: Pull complete
3e0ac8617d40: Pull complete
633091ee8d02: Pull complete
b01fa9e356ea: Pull complete
4cd472257298: Pull complete
1716325d7dcd: Pull complete
9b625d69c7c8: Pull complete
74d8b4d9818c: Pull complete
c36f5edbeb97: Pull complete
9b38bb0fb36e: Pull complete
6b5ee1c74b9a: Pull complete
5fcc518252b4: Pull complete
Digest: sha256:52579625addc98a371a644c0399f37e0908b6c28d3b68a0e418394adbe0eb699
Status: Downloaded newer image for postgres:latest
Creating postgres2342_db_1 ... done
Attaching to postgres2342_db_1

Обратите внимание на Creating volume "postgres2342_postgres_data" with default driver в начале и Attaching to postgres2342_db_1 в последней строке. Он соответствует имени созданного тома.

Если я скопирую файл compose в другой каталог с именем another_postgres и порождаю службу, это приводит к:

~/workspace/teststuff/postgres2342$ cd ..
~/workspace/teststuff$ mkdir another_postgres
~/workspace/teststuff$ cp postgres2342/docker-compose.yml another_postgres/
~/workspace/teststuff$ cd another_postgres/
~/workspace/teststuff/another_postgres$ docker-compose up -d
Creating network "another_postgres_default" with the default driver
Creating volume "another_postgres_postgres_data" with default driver
Creating another_postgres_db_1 ... done

Как вы можете видеть , название тома изменилось.

С помощью docker volume ls вы можете отобразить все docker тома в вашей системе. Таким образом, greping для всех томов, содержащих подстроку postgres, я получаю:

apoehlmann:~/workspace/teststuff/another_postgres$ docker volume ls | grep postgres
local               another_postgres_postgres_data
local               postgres2342_postgres_data

Однако, если я удаляю каталог и воссоздаю его без изменения его имени, все идет хорошо:

~/workspace/teststuff/another_postgres$ cd ..
~/workspace/teststuff$ rm -r postgres2342/
~/workspace/teststuff$ mkdir postgres2342
~/workspace/teststuff$ cp another_postgres/docker-compose.yml postgres2342/
~/workspace/teststuff$ cd postgres2342/
~/workspace/teststuff/postgres2342$ docker-compose up
Starting postgres2342_db_1 ... done
Attaching to postgres2342_db_1

Он присоединяет службу postgres к существующему тому, не создавая новый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...