python的Django项目部署到docker过程

本文详细介绍了如何使用Docker构建Python-Django项目的镜像,包括Dockerfile的编写、镜像构建、运行镜像以及解决运行过程中遇到的问题,如安装ping命令、处理编码错误、导入模块错误等。同时,还提供了删除容器和镜像的命令,以及最终环节的完整流程。
摘要由CSDN通过智能技术生成

1、定制一个镜像

dockerfile文件内容:

#基于的基础镜像

FROM python

#设置ipdivide文件夹是工作目录

WORKDIR ./ipdivide

#更新apt-get并安装ping命令

RUN apt-get update && apt-get install iputils-ping

#代码添加到 . 文件夹

ADD . .

#安装支持

RUN pip install -r requirements.txt -i Simple Index

# pip换源地址可自行更改

#运行命令

CMD ["python", "./manage.py", "runserver", "0.0.0.0:8000"]

PS:执行命令:pip freeze > requirements.txt 生成requirements.txt ,可以删除其中不需要的组件

2、开始构建镜像

例如:$ docker build -t nginx:v3 .

docker build -t test .

# test只是一个名字 . 表示放在当前目录

3、运行镜像

docker run -it -p 8000:8000 -v/root/ip:/ipdivide/ python:3.10 bash

docker exec -it 容器id bash(进入容器内)

运行镜像并进入镜像 -v 本地地址路径:容器地址路径(测试环节)

或者:

(推荐)docker run -itd -p 8000:8000 test01:latest (最终环节)

4、运行py项目

python manage.py runserver

可能会报错: from django.core.management import execute_from_command_line
        ModuleNotFoundError: No module named 'django'
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?

此错误为没有导入requirements.txt 里面相应的包

pip install -r requirements.txt -i Simple Index

Simple Index 为临时源

安装完成后运行即可:

python manage.py runserver 0.0.0.0:8000

报错合集

放到MobaXterm中出现utf-8编码错误:

pycharm中右下角选择unix模式的代码,然后重新导入

docker容器中默认不包含ping命令,执行以下代码:

apt-get update

apt-get install iputils-ping

虚拟机上不允许登录问题,修改以下代码为:

ALLOWED_HOSTS = ['*']

使用ping命令ping不通:

ret = subprocess.call("ping -n 1 -w 10 %s" % ip, shell=True)

使用ping命令参数无效:invalid parameter

原因:linux使用的ping参数不同于windows

修改:ret = subprocess.call("ping -c 1 -w 10 %s" % ip, shell=True)

-c 5 (ping 5次)

-s 56 (size为一个ping包的字节数)

-W 10 (第一个包响应超时的时间为10s)

-w 10 (ping操作完成的超时时间为10s )

docker rm -f 容器id 删除容器

docker rmi 镜像id 删除镜像

以上所提均为测试环节

最终环节为:

1.编写dockerfile

2.构建镜像 docker build -t ipdivide:v1.0 .

3.运行镜像 docker run -itd -p 8000:8000 ipdivide:v1.0(成功运行)

4.打包镜像 docker commit c2ec7ffdf339(镜像) ipdivide:v1.0

docker save -o ipdivide.tar(打包完成后的镜像包) ipdivide:v1.0

(完,ps:后续更新继续补充)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值