下面给出使用docker部署django的详细步骤:
环境准备
- 首先需要安装docker和docker-compose
Dockerfile编写
- 在项目根目录下创建Dockerfile文件,内容如下:
# 基础镜像选择,这里使用 Python 官方提供的运行环境镜像
FROM python:3.9-slim
#设置工作目录
WORKDIR /app
#拷贝代码到工作目录
COPY . /app/
#安装依赖
RUN pip install --no-cache-dir -r requirements.txt
#暴露8000端口
EXPOSE 8000
#执行命令启动服务
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
docker-compose编写
- 在项目根目录下创建 docker-compose.yml 文件,内容如下:
version: '3'
services:
db:
image: postgres
environment:
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypass
POSTGRES_DB: mydb
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/app
ports:
- "8000:8000"
depends_on:
- db
构建并启动容器
- 在项目根目录下执行以下命令
docker-compose build
- 构建成功后执行以下命令启动服务
docker-compose up
示例1:使用docker-compose部署django-todo-list应用
- 克隆django-todo-list代码
git clone https://github.com/PrettyPrinted/django-todo-list.git
-
在项目根目录下创建Dockerfile和docker-compose.yml
-
根据Dockerfile和docker-compose.yml文件启动容器
docker-compose up
- 访问http://localhost:8000进入django-todo-list应用
示例2:使用docker-compose和nginx部署自定义django应用
- 创建自定义Django项目,例如myapp
django-admin startproject myapp
- 在myapp文件夹根目录创建Dockerfile文件,内容如下:
#启动镜像
FROM python:3.9-slim
#设置工作目录
WORKDIR /app
#将当前目录拷贝到app文件夹中
COPY . /app
#安装依赖包
RUN pip install --no-cache-dir -r requirements.txt
#暴露端口
EXPOSE 8000
#执行命令启动服务
CMD ["python", "./myapp/manage.py", "runserver", "0.0.0.0:8000"]
- 在myapp文件夹根目录创建docker-compose.yml文件
version: '3'
services:
web:
build: .
ports:
- "8000:8000"
volumes:
- .:/app
- 在myapp文件夹根目录创建Dockerfile.nginx文件,内容如下:
#使用nginx镜像作为基础镜像
FROM nginx
#将本地的default.conf文件放到nginx镜像的配置文件夹中
COPY ./default.conf /etc/nginx/conf.d/default.conf
#暴露8000端口
EXPOSE 80
- 在myapp文件夹根目录创建default.conf文件,内容如下:
#配置nginx代理 django应用
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://web:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
- 根据Dockerfiles和docker-compose.yml启动服务
docker-compose up --build
- 浏览器访问http://localhost,即可进入自定义django应用
到此,使用docker部署django的全部环节结束。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用docker部署django的详细步骤 - Python技术站