我正在尝试对一个 Python 应用程序进行 dockerize,我一直在关注该应用程序本教程 https://realpython.com/blog/python/dockerizing-flask-with-compose-and-machine-from-localhost-to-the-cloud/。该教程是 2015 年 4 月的,仍然使用 Docker Machine,从这个答案 https://stackoverflow.com/a/38624540/1814949,不再需要在 Windows 上本地运行 Docker 容器。
我之前让它与 Docker Machine 一起工作,并且能够看到 Web 应用程序并与其交互。但现在我试图在没有 Docker Machine 的情况下在 Windows 10 上使用 Docker 版本 17.06.0-ce、内部版本 02c1d87 来实现此功能。
这是docker-compose.yml
:
web:
restart: always
build: ./web
expose:
- "8000"
links:
- postgres:postgres
volumes:
- /usr/src/app/static
env_file: .env
command: /usr/local/bin/gunicorn -w 2 -b :8000 app:app
nginx:
restart: always
build: ./nginx/
ports:
- "80:80"
volumes:
- /www/static
volumes_from:
- web
links:
- web:web
data:
image: postgres:latest
volumes:
- /var/lib/postgresql
command: "true"
postgres:
restart: always
image: postgres:latest
volumes_from:
- data
ports:
- "5432:5432"
我启动了容器:
$ docker-compose up -d
Creating polly_data_1 ...
Creating polly_data_1 ... done
Creating polly_postgres_1 ...
Creating polly_postgres_1 ... done
Creating polly_web_1 ...
Creating polly_web_1 ... done
Creating polly_nginx_1 ...
Creating polly_nginx_1 ... done
然后,当我跑步时docker ps
,它显示以下三个容器正在运行:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9b2c1048f3a5 polly_nginx "/usr/sbin/nginx" 4 seconds ago Up 3 seconds 0.0.0.0:80->80/tcp polly_nginx_1
d561ac5b901a polly_web "/usr/local/bin/gu..." 5 seconds ago Up 4 seconds 8000/tcp polly_web_1
ecb029d6ec3a postgres:latest "docker-entrypoint..." 7 seconds ago Up 5 seconds 0.0.0.0:5432->5432/tcp polly_postgres_1
(此时,导航至http://localhost:8000/
在 Chrome 中已经产生了ERR_CONNECTION_REFUSED
.)
然后,我按照教程运行脚本来设置数据库(额外//
因为我在 Windows 10 上使用 Git Bash):
$ docker-compose run web ///usr/local/bin/python create_db.py
Starting polly_data_1 ...
Starting polly_data_1 ... done
Starting polly_postgres_1 ... done
现在当我跑步时docker ps
,它显示以下四个容器正在运行:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a129c12f5982 polly_web "//usr/local/bin/p..." 5 seconds ago Up Less than a second 8000/tcp polly_web_run_1
9b2c1048f3a5 polly_nginx "/usr/sbin/nginx" 16 seconds ago Up 15 seconds 0.0.0.0:80->80/tcp polly_nginx_1
d561ac5b901a polly_web "/usr/local/bin/gu..." 17 seconds ago Up 16 seconds 8000/tcp polly_web_1
ecb029d6ec3a postgres:latest "docker-entrypoint..." 19 seconds ago Up 17 seconds 0.0.0.0:5432->5432/tcp polly_postgres_1
And localhost:8000
仍然拒绝连接。 Web 容器公开端口 8000,所以我不明白为什么无法连接到它。
我怎样才能让它工作,以便我可以访问网络应用程序web
本地容器?