Big*_*mes 12 python flask docker
我希望我的烧瓶服务器检测代码中的更改并自动重新加载.我在docker容器上运行它.每当我改变一些东西时,我都必须再次建造容器.我不知道哪里错了.这是我第一次使用烧瓶.
这是我的树
??? docker-compose.yml
??? web
??? Dockerfile
??? app.py
??? crawler.py
??? requirements.txt
Run Code Online (Sandbox Code Playgroud)
和代码(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')
Run Code Online (Sandbox Code Playgroud)
和docker-compose
version: '2'
services:
web:
build: ./web
ports:
- "5000:5000"
volumes:
- ./web:/code
Run Code Online (Sandbox Code Playgroud)
请给我一些建议.先感谢您.
lep*_*sch 14
Flask支持在调试模式下重新加载代码,就像您已经完成的那样.问题是应用程序在容器上运行,这使它与您正在开发的真实源代码隔离开来.无论如何,您可以使用以下卷来共享正在运行的容器和主机之间的源docker-compose.yaml:
这里是 docker-compose.yaml
version: "3"
services:
web:
build: ./web
ports: ['5000:5000']
volumes: ['./web:/app']
Run Code Online (Sandbox Code Playgroud)
在这里Dockerfile:
FROM python:alpine
EXPOSE 5000
WORKDIR app
COPY * /app/
RUN pip install -r requirements.txt
CMD python app.py
Run Code Online (Sandbox Code Playgroud)
小智 9
我设法使用docker-compose在docker中使用以下配置实现flask自动重载:
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']
Run Code Online (Sandbox Code Playgroud)
您必须在docker compose文件中手动指定环境变量和入口点才能实现自动重新加载.
假设您的文件结构如下:
Dockerfile:(注意工作目录)
FROM python:3.6.5-slim
RUN mkdir -p /home/project/bottle
WORKDIR /home/project/bottle
COPY requirements.txt .
RUN pip install --upgrade pip --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]
Run Code Online (Sandbox Code Playgroud)
Docker 组合:
version: '3'
services:
web:
container_name: web
volumes:
- './web:/home/project/bottle/' <== Local Folder:WORKDIR
build: ./web
ports:
- "8080:8080"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8343 次 |
| 最近记录: |