需求
1:已有django项目–weidanyewu
2:希望在服务器上测试部署–客户催
3:没完善django的启动
4:使用临时数据库进行演示
5:使用python3.10版本镜像
6:展示端口80
7:后台执行django程序
8:不配置uwsgi
9:能用就行
10:不想自己给服务器配置python环境,运维已经逃
Dockerfile文件【docker/Dockerfile】
FROM python:3.10.12-buster
#标记镜像名为python 标签为3.10.12-buster
# 暴露端口
EXPOSE 80
EXPOSE 80
# 设置容器中的相关设置
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
# 创建文件夹
# 并且升级pip
RUN mkdir /weidanyewu && mkdir /weidanyewubak && pip install --upgrade pip
# 复制本Dockerfile路径中的requirements.txt文件到容器中的weidanyewu文件夹
COPY requirements.txt /weidanyewu
# 进入容器中的app文件夹
# 获取到容器中的环境变量,并且存放到app文件夹中,命名为env_bak.txt文件
# 安装requirements.txt中列出的插件
# 在容器中创建一个django项目,并且命名为weidanyewu
RUN cd /weidanyewu && env | tee -a env_bak.txt && pip install -r requirements.txt && django-admin startproject weidanyewu
#进入到容器中的weidanyewu文件夹,并且复制这个文件夹中的内容到weidanyewubak文件夹
RUN cd /weidanyewu && cp -r . /weidanyewubak
django框架使用到的插件
requirements.txt【docker/requirements.txt】
django==4.2.8
django-import-export==3.3.6
cryptography==41.0.7
pycparser==2.21
pycryptodome==3.20.0
rsa==4.9
django-simple-captcha==0.6.0
docker-compose.yml文件
version: "3.9"
# 指定网络
networks:
aliyuntest:
ipam:
driver: default
config:
- subnet: 172.168.0.0/16
services:
# my_django4_2_5 用于服务 8003端口 域名 chenguwen my_django_8003:
build: ./docker
#因为这个Dockerfile在docker/Dockerfile
# 指定docker镜像的名字
image: my_django_8003:b20231007
# 指定容器名称
container_name: my_django_8003
environment:
# django框架使用的密匙
# 指定django框架启动的本地开发入口文件
ports:
- 80:80/tcp
restart: always
volumes:
# -使用wsl 子系统时,挂载的文件路径
- /home/pythontgz/weidanyewu:/weidanyewu
working_dir: /weidanyewu
privileged: true
command: ["sleep", "infinity"]
networks:
aliyuntest:
ipv4_address: 172.168.0.3
启动docker compose
docker compose up -d
进入到容器中
docker compose exec my_django_8003 bash
docker compose exec [服务名] bash
启动django程序
cd /weidanyewu
python manage.py runserver 0.0.0.0:80
希望django程序在后台执行
1:进入容器
docker compose exec my_django_8003 bash
2:后台执行django程序
nohup python manage.py runserver 0.0.0.0:80 &
3:推出容器
exit