利用 Docker 进行 Django 项目的本地开发
技术栈
- Docker & Docker-Compose
- Python
- Django
- PostgreSQL
最终效果
编写 Dockerfile
这里的 Dockerfile 的作用就是简单的创立一个 Python 环境,并且为启动 Django 项目的测试服务器提供了默认参数(注意这里必须绑定 0.0.0.0 才能让其在外部可以访问)
1 | FROM python:3.8 |
编写 docker-compose.yml
docker-compose 文件做了以下事情
- 从远端拉取 PostgreSQL 的容器,并设定了默认的服务器、账号、密码
- 利用 Dockerfile 构建 Django 服务(这里因为我的 Dockerfile 命名为
Dockerfile-dev
,因此需要指定 Dockerfile 的名称,如果是使用的Dockerfile
文件名则不用) - 缓存了 python package 路径与数据库的数据
- 将 Django 的 8080 和数据库的 5432 端口开放出来
- 将本地目录暴露给 Django 容器
1 | version: "3" |
尝试运行
直接使用 docker-compose -f 配置文件 up
尝试是否可以正常运行起容器(如果配置文件名为 docker-compose.yml
或 docker-compose.yaml
则可以省略 -f 配置文件
这一参数)
如果出现了问题,可以利用 docker-compose -f 配置文件 run web bash
进入至容器中
另外注意,代码内的连接数据库等应当使用 db
代替之前的 [localhost](http://localhost)
之类的数据库服务器路径
配置 PyCharm
进入项目的 Python Interpreter 设置,添加一个来源于 Docker Compose 的环境,将配置文件选为 docker_compose.yml 文件、服务选为 web,确定后即可享受代码补全等
而如果想要用 PyCharm 带的运行,则进入 Run Configurations,Host 设定为 0.0.0.0、Port 设定为 8080(与 docker_compose.yml 中暴露的相同),下面的解释器选择为刚刚添加的。
技术栈
- Docker & Docker-Compose
- Python
- Django
- PostgreSQL