【发布时间】:2016-02-11 12:02:39
【问题描述】:
我有一个 Vagrant phusion/ubuntu-14.04 虚拟机,我在上面安装了 docker 和 docker-compose。使用 docker-compose 我启动了一个 Flask Web 服务和一个 db 服务(以及它的数据容器)。 我使用similarmanage.py 文件来启动烧瓶应用程序进行测试,并使用下面的方法进行每次测试的设置和拆卸。
我通常使用docker-compose up,所以我启动所有容器并可以看到它们的标准输出。我想要实现的想法是,在每次代码更改时,flask 应用程序都会重新加载,即使如果代码更改破坏了代码并且容器不会死亡并继续侦听代码更改。
现在,如果代码更改没有破坏代码,则重新加载应用程序(通过将 flask 的 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
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 就是 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
【问题讨论】:
标签: flask vagrant gunicorn docker-compose python-3.5