Flask Docker Compose+;即使在无效代码上也要重新加载

Flask Docker Compose+;即使在无效代码上也要重新加载,flask,vagrant,gunicorn,docker-compose,python-3.5,Flask,Vagrant,Gunicorn,Docker Compose,Python 3.5,我有一个Vagrant phusion/ubuntu-14.04虚拟机,我在上面安装了docker和docker compose。使用docker compose,我启动了一个Flask web服务和一个db服务(及其数据容器)。 我使用manage.py文件启动flask应用程序进行测试,并使用以下方法进行每次测试设置和拆卸 我通常会编写docker,这样我就可以启动所有容器并查看它们的标准输出。我想实现的是,在每次代码更改时,flask应用程序都会重新加载,即使代码更改破坏了代码,容器也不会

我有一个Vagrant phusion/ubuntu-14.04虚拟机,我在上面安装了docker和docker compose。使用docker compose,我启动了一个Flask web服务和一个db服务(及其数据容器)。 我使用manage.py文件启动flask应用程序进行测试,并使用以下方法进行每次测试设置和拆卸

我通常会编写
docker
,这样我就可以启动所有容器并查看它们的标准输出。我想实现的是,在每次代码更改时,flask应用程序都会重新加载,即使代码更改破坏了代码,容器也不会死掉并继续侦听代码更改。 现在,如果代码更改没有破坏代码,则会重新加载应用程序(通过将flask的DEBUG设置为True并从docker compose.yaml实现)。 很明显,我对Docker是新手

这是所有相关文件。 以下是Vagrant文件docker-compose.yaml和Dockerfile

  config.vm.box = "phusion/ubuntu-14.04-amd64"
  config.vm.network "private_network", ip: "192.168.33.69"
  config.vm.synced_folder ".", "/vagrant_data"
  //install docker via inline shell provisioning
docker-compose.yaml

web:
  restart: always #not sure if this actually helps somehow
  build: .
  ports: 
    - "80:80"
  expose:
    - "80"
  links:
    - postgres:postgres
  volumes:
    - .:/usr/src/app/
  env_file: .env
  command: /usr/local/bin/gunicorn --reload -w 2 -b :80  hello:app 
  //below is the db+data services
用于构建web服务的Dockerfile只是python-3.5.1-obuild中的

这就是文件夹结构

|-- docker-compose.yaml
|-- Dockerfile
|-- hello.py
|-- Procfile --heroku stuff
|-- requirements.txt
`-- Vagrantfile
如果我做了无效的代码更改,下面是日志:

web_1 |   File "/usr/local/lib/python3.5/traceback.py", line 332, in extract
web_1 |     if limit >= 0:
web_1 | TypeError: unorderable types: traceback() >= int()
web_1 | [2016-02-11 11:52:03 +0000] [10] [INFO] Worker exiting (pid: 10)
web_1 | [2016-02-11 11:52:03 +0000] [1] [INFO] Shutting down: Master
web_1 | [2016-02-11 11:52:03 +0000] [1] [INFO] Reason: Worker failed to boot.
vagrantdata_web_1 exited with code 0

我认为
restart:always
正在工作,但是
logs
命令不会重新附加到新容器。如果您再次运行
docker compose logs
,我相信您会看到容器再次启动。

我认为
重新启动:总是
工作,但是
logs
命令不会重新附加到新容器。如果您再次运行
docker compose logs
,我相信您会看到容器再次启动。

谢谢您的回答-您是正确的。实际上,我运行了
docker compose logs web
来查看web服务的日志。感谢您的回答-您是正确的。实际上,我运行了
docker compose logs web
,以查看web服务的日志。