python - 如何从浏览器访问在 Google Compute Engine 虚拟机上运行的 Django?

标签 python django docker google-cloud-platform google-compute-engine

我有一个 Django 仪表板应用程序,我希望从浏览器中查看。 Django 正在 Google 计算引擎实例之一的 Docker 容器中运行。 GCE 实例位于 Google VPC 上,我在其上添加了防火墙规则以打开 Django 的端口 8000。我已将我的 IP 添加到 settings.py 中 Django 的 ALLOWED_HOSTS 中。容器的日志表明它运行良好,但是当我从浏览器访问 GCE 实例的 IP 时,我立即无法连接。我可以从命令行对实例执行 ping 操作。我在这里缺少什么吗?已经被困在这个问题上几个小时了。

注意:我让 Django 容器在“Docker 网络”上运行,以便 Celery 与 RabbitMQ 容器进行通信。这是有人向我推荐的,但我不熟悉 Docker 网络或者它们是否导致了问题。

最佳答案

经过多次尝试和错误,我找到了解决方案。这不是很直观,所以我会在这里发帖,以防我可以帮助其他人。

对我来说,解决这个问题的方法是在运行应用程序的容器时在命令行上公开端口(8000): docker run -p 8000:8000 ...

这个问题困扰了我这么久,是因为我已经在 Dockerfile 中公开了端口:EXPOSE 8000 ,当我运行 docker ps 时要列出每个容器上公开的端口,该容器似乎已经公开了端口:8000/tcp 。然而,我不知道的是它应该看起来像:0.0.0.0:8000->8000/tcp .

无论如何,希望这对其他人有帮助。

关于python - 如何从浏览器访问在 Google Compute Engine 虚拟机上运行的 Django?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61621434/

相关文章:

sqlite - 当 MediaWiki 尝试从安装到 docker conainer 的 sqlite db 读取数据时,它会引发 DBTransactionStateError

python - 为什么我无法使用 scipy.optimize.curve_fit 将 sigmoid 函数拟合到此数据?

Python - 如何替换列表中的字符串?

python - 多标签分类交叉验证错误

python - Django 变量在标题部分不可见

docker - NiFi-自动配置最大线程

python - 单击按钮后抓取数据

django - 使用 RequireJS 构建大型 JavaScript 代码

python - Django导入错误: cannot import name 'render_to_response' from 'django.shortcuts'

docker - 如何在 DevOps 部署中使用 TestCafe-Cucumber Node.js 项目