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

时间:2016-02-11 12:02:39

标签: flask vagrant gunicorn docker-compose python-3.5

我有一个Vagrant phusion / ubuntu-14.04虚拟机,我在其上安装了docker和docker-compose。使用,docker-compose我启动了Flask Web服务和数据库服务(以及它的数据容器)。 我使用similar manage.py文件启动烧瓶应用程序以进行测试,并使用以下方法进行per-test setUp和tearDown。

我通常会docker-compose up所以我启动所有容器并且可以看到他们的标准输出。我想要实现的想法是,在每次代码更改时,如果代码更改破坏了代码并且容器没有死并继续监听代码更改,则会重新加载烧瓶应用程序,甚至 。 现在,如果代码更改没有破坏代码,则重新加载应用程序(通过将flask' s DEBUG设置为True并从docker-compose.yaml中实现)。 可能很明显我是Docker的新手。

以下是所有相关文件。  这是Vagrantfile,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

搬运工-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只是FROM 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

1 个答案:

答案 0 :(得分:2)

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