在 Windows 10 Home Machine 上使用 Docker 和 Flask 重新加载
Reload With Docker and Flask on Windows 10 Home Machine
我无法让 Flask 注意到我的代码更改并重新加载,这使得迭代编程变得非常困难。
我的系统:我使用的电脑带有 Windows 10 运行 Docker 工具箱主页(常规 docker 不适用于 Windows 10家)。
我的代码:
Docker文件
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)
(为了简洁起见,我对此进行了一些编辑,并没有泄露我正在做的事情:))
- 我是不是做错了什么?
- 如果没有,我 运行 进入这张 VirtualBox 的旧票,其中的情况听起来非常相似。 (https://www.virtualbox.org/ticket/14920) 如果这是我的问题,什么是好的解决方案或解决方法? (我不打算购买新机器或 OS)
这部分:
volumes:
- .:/code
您正在将容器中的 /code
映射到当前目录。但是你的 workdir
设置为 /app
.
ADD . app
WORKDIR /app
因此您不需要将 app.py
文件添加到容器中的 workdir
,您只需要将主机当前目录中的卷映射到 /app
容器中的目录。
因此,您需要更改:
volumes:
- .:/code
至:
volumes:
- .:/app
在您的 docker-compose.yml
文件中。
并删除 Dockerfile
文件中的以下行:
ADD . app
我无法让 Flask 注意到我的代码更改并重新加载,这使得迭代编程变得非常困难。
我的系统:我使用的电脑带有 Windows 10 运行 Docker 工具箱主页(常规 docker 不适用于 Windows 10家)。
我的代码:
Docker文件
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)
(为了简洁起见,我对此进行了一些编辑,并没有泄露我正在做的事情:))
- 我是不是做错了什么?
- 如果没有,我 运行 进入这张 VirtualBox 的旧票,其中的情况听起来非常相似。 (https://www.virtualbox.org/ticket/14920) 如果这是我的问题,什么是好的解决方案或解决方法? (我不打算购买新机器或 OS)
这部分:
volumes:
- .:/code
您正在将容器中的 /code
映射到当前目录。但是你的 workdir
设置为 /app
.
ADD . app
WORKDIR /app
因此您不需要将 app.py
文件添加到容器中的 workdir
,您只需要将主机当前目录中的卷映射到 /app
容器中的目录。
因此,您需要更改:
volumes:
- .:/code
至:
volumes:
- .:/app
在您的 docker-compose.yml
文件中。
并删除 Dockerfile
文件中的以下行:
ADD . app