【问题标题】:Reload With Docker and Flask on Windows 10 Home Machine在 Windows 10 家庭计算机上使用 Docker 和 Flask 重新加载
【发布时间】:2018-04-11 01:10:38
【问题描述】:

我无法让 Flask 注意到我的代码更改并重新加载,这使得迭代编程变得非常困难。

我的系统:我正在使用装有 Windows 10 Home 的 PC 运行 Docker Toolbox(常规 docker 在 Windows 10 Home 上不起作用)。

我的代码:

DockerFile

FROM python:3.4-alpine
RUN  pip install flask-security flask-sqlalchemy
RUN pip install requests
ADD . app
WORKDIR /app
RUN pip install -r requirements.txt
ENTRYPOINT ["python3"]
CMD ["app/app.py"]

docker-compose.yml

version: '3'
services:
  web:
    build: .
    ports:
     - "5000:5000"
    volumes:
     - .:/code

app/app.py

from flask import Flask
# Create app
app = Flask(__name__)
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'super-secret'
# Bcrypt is set as default SECURITY_PASSWORD_HASH, which requires a salt
app.config['SECURITY_PASSWORD_SALT'] = 'super-secret-random-salt'

@app.route("/")
def hello():
    return 'hello world'

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

(为了简洁起见,我对它进行了一些编辑,而不是泄露我正在做的事情:))

  1. 我做错了吗?
  2. 如果不是,我遇到了这张 VirtualBox 的旧票,情况听起来非常相似。 (https://www.virtualbox.org/ticket/14920) 如果这是我的问题,什么是好的解决方案或解决方法? (我不打算购买新机器或操作系统)

【问题讨论】:

    标签: docker flask docker-compose docker-volume docker-toolbox


    【解决方案1】:

    这部分:

    volumes:
     - .:/code
    

    您正在将容器中的/code 映射到当前目录。但是您的workdir 设置为/app

    ADD . app
    WORKDIR /app
    

    因此,您无需将app.py 文件添加到容器中的workdir,只需将卷从主机中的当前目录映射到容器中的/app 目录即可。

    所以,你需要改变:

    volumes:
     - .:/code
    

    到:

    volumes:
     - .:/app
    

    在您的 docker-compose.yml 文件中。

    并删除 Dockerfile 文件中的以下行:

    ADD . app
    

    【讨论】:

    • @user7097722 这是自动检测更改还是每次都需要重新启动容器?
    猜你喜欢
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多