在部署我自己编写的Django项目时, 由于我在windows下编写代码时启动端口都为8000, 但是在部署项目时, 需要让外界使用80端口直接访问, 因此总结出以下三种方法实现
由于我的项目使用了websocket对于访问的端口十分敏感, 实际部署中使用的是iptables
端口转发
在将 Django 应用程序部署到 Docker 容器中时,可能会遇到 WebSocket 连接的问题。以下是如何解决这些问题的详细总结。
在使用 Docker 部署 Django 应用时,WebSocket 连接无法正常工作。具体表现为,WebSocket 连接尝试使用本地地址(如 ws://127.0.0.1:8000
),而在容器外部(如公网访问)时会导致连接失败。
在 Docker 容器中运行 Django 应用时,确保使用正确的端口映射。比如,如果 Django 开发服务器在容器内的 8000 端口上运行,并且希望在主机的 8000 端口上进行访问,应使用以下命令启动 Docker 容器:
bashdocker run -p 8000:8000 your_docker_image
这将容器内的 8000 端口映射到主机的 8000 端口,使得外部访问 http://156.238.236.88:8000
能够正确地连接到容器中的 Django 应用。
在将 Django 项目部署到 Docker 容器中时,遇到了一个与 MySQL 数据库连接相关的问题。具体表现为在执行数据库迁移时,Django 报错无法加载 MySQL 的 caching_sha2_password
认证插件。经过分析,这是由于 Docker 容器中缺少必要的 MySQL 客户端库,或者 MySQL 使用的默认认证方式不兼容容器中的配置。