2016-01-26 22 views
8

Próbowałem bardzo prosty pierwszy test aplikacji Pythona z redis zgodnie z dokumentacją docker. To zawiesza się po pewnym czasie, ponieważ redis nie może przetrwać. Nie mam pojęcia, dlaczego. Można znaleźć repo publicznego tutaj: Github repoDlaczego redis nie może uzyskać dostępu do dysku w oknie dokowanym?

Mój obecny doker-compose.yml jest:

web: 
    build: . 
    ports: 
    - "5000:5000" 
    volumes: 
    - .:/code 
    links: 
    - redis 
redis: 
    image: redis:latest 
    volumes: 
    - ./data:/data 

Edit: ten jest fragmentem dziennika:

1:M 09 Feb 10:51:15.130 # Background saving error 
1:M 09 Feb 10:51:21.072 * 100 changes in 300 seconds. Saving... 
1:M 09 Feb 10:51:21.073 * Background saving started by pid 345 
345:C 09 Feb 10:51:21.074 # Failed opening .rdb for saving: Permission denied 
1:M 09 Feb 10:51:21.173 # Background saving error 
1:M 09 Feb 10:51:27.011 * 100 changes in 300 seconds. Saving... 
1:M 09 Feb 10:51:27.011 * Background saving started by pid 346 
346:C 09 Feb 10:51:27.013 # Failed opening .rdb for saving: Permission denied 

Edit2: jest pełny błąd Redis rzuca pythona:

MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error 

Zabawne jest to, że nie zrobić coś na obrazie redis.

+0

To musi być coś w twoim komputerze, przetestowałem twój plik .yml i działa on dla mnie –

+0

Czy na pewno się zawiesi, ponieważ Redis nie może przetrwać? Nie tak zachowuje się Redis. – tddmonkey

+0

Możesz przeglądać logi swojego kontenera redis za pomocą 'dzienników dokowania --follow . Czy możesz to sprawdzić i opublikować tutaj? – alkis

Odpowiedz

14

To błąd uprawnień, zaloguj się do kontenera redis przez docker exec -it redis_container_name bash i upewnij się, że ma uprawnienia do zapisu na /data.

Prawdopodobnie tak nie jest i można to naprawić na kilka sposobów: użyj obiektu docker volume zamiast wiązania-montowania hosta lub spróbuj naprawić uprawnienia hosta, dopasowując identyfikator uid/gid do właściciela w kontenerze.

Ponadto, jak podano na stronie piasty doker, należy polecenia Redis' ustawić na:

web: 
    build: . 
    ports: 
    - "5000:5000" 
    volumes: 
    - .:/code 
    links: 
    - redis 
redis: 
    image: redis:latest 
    command: redis-server --appendonly yes 
    volumes: 
    - ./data:/data 

jeśli zamierzają utrzymywać dane.

Ponieważ Twój folder data ma ustawione złe uprawnienia, zacznij od usunięcia go i pozwól, aby kompozycja dokera została utworzona.

+0

Czy mógłbyś rozwikłać repozytorium, zaktualizować to, co według ciebie powinno być i wysłać do mnie żądanie pobrania? Próbowałem niektórych rzeczy, ale ponieważ jestem bardzo nowy w dockingu, tak naprawdę nie rozumiem. Przepraszam. –

+0

@DennisDecoene zobacz moje zmiany –

0

I zostały zaktualizowane mojego repo z wersji roboczej, oznacz 0,2

Kiedyś pracował z wersji 2 pliku Döcker to działało dobrze.