2017-06-03 69 views
2

我想讓我的瓶服務器檢測代碼中的更改並自動重新加載。 我在碼頭集裝箱上運行這個。 每當我改變一些東西時,我必須重新構建並重新構建容器。我不知道哪裏錯了。這是我第一次使用燒瓶。Docker上自動重新加載瓶服務器

這裏是我的樹

├── docker-compose.yml 
└── web 
    ├── Dockerfile 
    ├── app.py 
    ├── crawler.py 
    └── requirements.txt 

和代碼(app.py)

from flask import Flask 
import requests 
app = Flask(__name__) 

@app.route('/') 
def hello_world(): 
    return 'Hello Flask!!' 

if __name__ == '__main__': 
    app.run(debug = True, host = '0.0.0.0') 

和碼頭工人,組成

version: '2' 
services: 

    web: 
    build: ./web 
    ports: 
    - "5000:5000" 
    volumes: 
    - ./web:/code 

請給我一些建議。先謝謝你。

+0

我相信你需要做的就是更密切地在github上觀看[this thread](https://github.com/docker/compose/issues/184)。你永遠不會把你的命令放在如何運行你的碼頭上 –

+0

請發佈你的docker-compose,我會看到它適應它 – Robert

+0

@Robert我加了它。請仔細檢查並幫助我。 – James

回答

1

Flask支持在調試模式下重新加載代碼,就像您已經完成的那樣。問題是應用程序正在容器上運行,並將其與您正在開發的真實源代碼隔離。無論如何,你可以在你的docker-compose.yaml共享運行容器和主機與卷之間的來源是這樣的:

這裏是docker-compose.yaml

version: "3" 
services: 
    web: 
    build: ./web 
    ports: ['5000:5000'] 
    volumes: ['./web:/app'] 

而這裏Dockerfile

FROM python:alpine 

EXPOSE 5000 

WORKDIR app 

COPY * /app/ 

RUN pip install -r requirements.txt 

CMD python app.py 
0

我設法使用碼頭工具實現碼頭自動重新加載,並使用以下配置:

version: "3" 
services: 
    web: 
    build: ./web 
    entrypoint: 
     - flask 
     - run 
     - --host=0.0.0.0 
    environment: 
     FLASK_DEBUG: 1 
     FLASK_APP: ./app.py 
    ports: ['5000:5000'] 
    volumes: ['./web:/app'] 

您必須在Docker撰寫文件中手動指定環境變量和入口點以實現自動重新加載。

相關問題