Docker. TemplateDoesNotExist at..

0

Czołem!
Jakis czas temu stwierdziłemże przesiadka z Linuksa na Windowsa jest dobrym momętem aby wdrożyć Dockera, tym bardziej że to tylko kwestia czasu jak bede go stawiał na jakimś zewnętrzym serwerze. Nie stety tak jak w tytule, Python ma problem z odnalezieniem templates. Sprawdzałem jak z dostępnośca folderów i plików w maszynie wirtualnej i chyba pod tym względem wszystko ok.

  1. Maszyne w. odpalam przez Oracle Virtual Box.
  2. Po odpaleniu docker-compose up i docker-compose top dostaje:

root 2609 2587 4 13:34 ? 0003 python /code/manage.py runserver 0.0.0.0:8000
root 2671 2609 11 13:34 ? 0006 /usr/local/bin/python /code/manage.py runserver 0.0.0.0:8 000

  1. miedzyczasię dostaje info o tym że jest jakiś problem z połaczeniem się z bazą postgres ale to prawie na pewno nie to.

4.Po zrobieniu requesta na strone główną dostaje:

TemplateDoesNotExist at /
store/product/list.html
Request Method: GET
Request URL: http://192.168.99.100:8000/
Django Version: 2.1.5
Exception Type: TemplateDoesNotExist
Exception Value:
store/product/list.html
Exception Location: /usr/local/lib/python3.7/site-packages/django/template/loader.py in get_template, line 19
Python Executable: /usr/local/bin/python
Python Version: 3.7.4
Python Path:
['/code',
'/usr/local/lib/python37.zip',
'/usr/local/lib/python3.7',
'/usr/local/lib/python3.7/lib-dynload',
'/usr/local/lib/python3.7/site-packages']
Server time: Śr, 25 Wrz 2019 1551 +0200

Help!

1

Magiczna kula mówi mi, że zbudowałeś obraz, potem dodałeś szablon na hoście i w kontenerze go po prostu nie ma, bo są w nim tylko te pliki, które istniały w czasie budowana. Zdefiniuj wolumen albo przebuduj obraz.

Pokaż plik docker-compose.yml.

0
iksde napisał(a):

Magiczna kula mówi mi, że zbudowałeś obraz, potem dodałeś szablon na hoście i w kontenerze go po prostu nie ma, bo są w nim tylko te pliki, które istniały w czasie budowana. Zdefiniuj wolumen albo przebuduj obraz.

Pokaż plik docker-compose.yml.

Wszystkie pliki miałem w folderach przed zrobieniem builda.

docker-compose.yaml:

version: '3'

services:
db:
image: postgres:10.1-alpine
volumes:
- postgres_data:/var/lib/postgresql/data/
web:
build: .
command: python /code/manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- 8000:8000
depends_on:
- db

volumes:
postgres_data:

Dockerfile:

FROM python:3.6

Set environment varibles

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

RUN mkdir /code

WORKDIR /code

COPY requirements.txt /code/
RUN pip install -r requirements.txt

COPY . /code/

ENTRYPOINT ["python", "manage.py"]
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

0

Hm, więc raczej wina w konfiguracji django. Bez dockera ci to działało?

Wklejaj kod w znaczniki ``` to będzie ładniej wyglądał.

Pokaż wartość TEMPLATES w ustawieniach i podaj ścieżkę pod którą fizycznie znajduje się ten szablon (począwszy od roota projektu).

0
iksde napisał(a):

Hm, więc raczej wina w konfiguracji django. Bez dockera ci to działało?

Wklejaj kod w znaczniki ``` to będzie ładniej wyglądał.

Pokaż wartość TEMPLATES w ustawieniach i podaj ścieżkę pod którą fizycznie znajduje się ten szablon (począwszy od roota projektu).

Tak działało. Z tym że na bazie sqlite.

Scieżka: C:\Users...\Projects\Shop\Shop\templates\shop\product\list.html

kod:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'store/templates', )]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'cart.context_processors.cart',
            ],
            'libraries':{
                         'active_class': 'store.templatetags.active_class',

            }
        },
    },
]
0

'DIRS': [os.path.join(BASE_DIR, 'store/templates', )] nie powinno być 'DIRS': [os.path.join(BASE_DIR, 'Shop/templates', )]?

0
iksde napisał(a):

'DIRS': [os.path.join(BASE_DIR, 'store/templates', )] nie powinno być 'DIRS': [os.path.join(BASE_DIR, 'Shop/templates', )]?

Nie.To nie to. Ale swoją drogą bedę musiał to poprawić.

0

Jak nie to? Każesz Django szukać templatek w katalogu store/templates, a nigdzie w ścieżce szablonu nie ma po drodze folderu store?

0
iksde napisał(a):

Jak nie to? Każesz Django szukać templatek w katalogu store/templates, a nigdzie w ścieżce szablonu nie ma po drodze folderu store?

I store i Shop ma indentyczną strukturę jeśli chodzi o templates. Przesłałem printscr.

1 użytkowników online, w tym zalogowanych: 0, gości: 1