2017-10-29 241 views
0

我正在通過this tutorial,我已經成功地完成了堆疊運行。初學者碼頭工碼頭組成

什麼是竊聽我是當我在我的主機更改我的代碼(在web服務),它不會自動當我重新加載頁面在瀏覽器中進行更改。我不明白爲什麼它會這樣做。這是我的docker-compose.yml文件:

web: 
    restart: always 
    build: ./web 
    expose: 
    - "8000" 
    links: 
    - postgres:postgres 
    - redis:redis 
    volumes: 
    - ./web:/usr/src/app 
    - ./web/static:/usr/src/app/static 
    env_file: .env 
    environment: 
    DEBUG: 'true' 
    command: /usr/local/bin/gunicorn docker_django.wsgi:application -w 2 -b :8000 

nginx: 
    restart: always 
    build: ./nginx/ 
    ports: 
    - "80:80" 
    volumes: 
    - /www/static 
    volumes_from: 
    - web 
    links: 
    - web:web 

postgres: 
    restart: always 
    image: postgres:latest 
    ports: 
    - "5432:5432" 
    volumes: 
    - pgdata:/var/lib/postgresql/data/ 

redis: 
    restart: always 
    image: redis:latest 
    ports: 
    - "6379:6379" 
    volumes: 
    - redisdata:/data 

我不認爲這是gunicorn做重裝,因爲我相信gunicorn需要--reload標誌實際上做熱重裝。

回答

1

此行表示您將主機上的位置映射到Web容器中的位置。

volumes: 
    - ./web:/usr/src/app 
    - ./web/static:/usr/src/app/static 

因此你改變你的名.web目錄更改代碼的任何時間,它是在容器內更新。如果您不希望發生這種情況,那麼您需要在通過在Dockerfile中爲該容器指定容器來構建容器時複製這些目錄。

+0

謝謝,並且有道理。爲什麼gunicorn有一個'--reload'標誌呢?而且,當使用像'waitress'這樣的服務器或甚至內置的django runserver時,就好像代碼需要重新加載才能真正反映出來一樣。 – qarthandso

+0

我相信會發生這種情況,因爲你有你的環境變量'DEBUG:true'。 – zachdb86

+0

這可能會影響'Django中的settings.py',但爲什麼會影響提供文件的'gunicorn'。 – qarthandso