需求
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