百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

django集成进docker,并且使用pycharm进程代码调试

wptr33 2025-02-06 16:37 56 浏览

之前写的django代码都是在本地,现在需要把它集成到docker容器里,还想继续使用pycharm进行编辑,下面是具体实现。

(1)先备份之前的mysql数据库

mysqldump -uroot -p OBServer>/root/OBServer.sql

再拉取新的同版本的mysql容器镜像

docker pull mysql:5.7.35

docker pull python:3.6

(2)编写dockerfile

FROM python:3.6从python3.6的容器镜像进行构建

ENV PYTHONUNBUFFERED 1

RUN mkdir /code

RUN mkdir /code/db

WORKDIR /code

ADD ./DjangoWeb/requirements.txt /code/

RUN pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

ADD . /code/

我把之前环境里面安装过的python包都集成到了容器里面:

[root@FNSHB109 DjangoWeb]# cat requirements.txt
django==2.2.12
paramiko==2.7.2
crypto==1.4.1
Crypto
PyMySQL==1.0.2
Jinja2==3.0.1
pip==20.3.4
channels==3.0.4
cryptography==35.0.0
pyzmq==22.2.1
urllib3==1.26.6
setuptools==44.1.1
Automat==20.2.0
MarkupSafe==2.0.1
Naked==0.1.31
certifi==2021.5.30
charset_normalizer==2.0.4
contextvars==2.4
distlib==0.3.2
distro==1.6.0
MarkupSafe==2.0.1
django_commands==0.7
filelock==3.0.12
idna==3.2
immutables==0.16
importlib_metadata==4.8.1
importlib_resources==5.2.2
MarkupSafe==2.0.1
msgpack==1.0.2
pycryptodome==3.10.1
pycryptodomex==3.10.1
six==1.16.0
typing_extensions==3.10.0.2
virtualenv==20.7.2
zipp==3.5.0
platformdirs==2.3.0
pytz==2021.1
PyYAML==5.4.1
pyzmq==22.2.1
requests==2.26.0
shellescape==3.8.1
sqlparse==0.4.1
zmq

(3)启动容器

docker run -p 3306:3306 -v /mysite/db:/var/lib/mysql --name mysite_db_1 -dit mysql:5.7.35
docker run -p 8000:8000 -p 8022:22 --link mysite_db_1:db -v /mysite:/code --name mysite_django_web324 -dit mysite_web324

(4)使用pycharm进行代码调试

我使用的是pycharm通过ssh远程控制docker,docker里面没有ssh,需要安装,其他的包比如ping什么的都可以通过下面方法在容器里面安装

apt-get update
apt-get install openssh-server
echo 'root:123456' | chpasswd
# 将Root的密码修改为123456
sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
允许使用root身份登录
sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
$ echo "export VISIBLE=now" >> /etc/profile
service ssh restart

(5)pycharm远程docker容器

本地新建一个干净的工程,当然我使用的pychram专业版,不清楚社区版有没有ssh功能。

找到deployment下面的configuration。

选择sftp类型,填上需要远程的机器,端口和密码,这个端口是docker映射到主机上的端口。

选择python解析器,这里调用的docker容器里面的python路径一定要对,我这里是/usr/local/bin/python3,如果路径不对,下面的package就没有,就不能有一个完整的python3环境。

配置完成后,就可以看到docker远端的代码了,需要控制django重启,需要配置运行左边的配置,后面可以直接修改代码,修改完成后, 点击重启django服务就可以编译新的代码了。

相关推荐

oracle数据导入导出_oracle数据导入导出工具

关于oracle的数据导入导出,这个功能的使用场景,一般是换服务环境,把原先的oracle数据导入到另外一台oracle数据库,或者导出备份使用。只不过oracle的导入导出命令不好记忆,稍稍有点复杂...

继续学习Python中的while true/break语句

上次讲到if语句的用法,大家在微信公众号问了小编很多问题,那么小编在这几种解决一下,1.else和elif是子模块,不能单独使用2.一个if语句中可以包括很多个elif语句,但结尾只能有一个...

python continue和break的区别_python中break语句和continue语句的区别

python中循环语句经常会使用continue和break,那么这2者的区别是?continue是跳出本次循环,进行下一次循环;break是跳出整个循环;例如:...

简单学Python——关键字6——break和continue

Python退出循环,有break语句和continue语句两种实现方式。break语句和continue语句的区别:break语句作用是终止循环。continue语句作用是跳出本轮循环,继续下一次循...

2-1,0基础学Python之 break退出循环、 continue继续循环 多重循

用for循环或者while循环时,如果要在循环体内直接退出循环,可以使用break语句。比如计算1至100的整数和,我们用while来实现:sum=0x=1whileTrue...

Python 中 break 和 continue 傻傻分不清

大家好啊,我是大田。...

python中的流程控制语句:continue、break 和 return使用方法

Python中,continue、break和return是控制流程的关键语句,用于在循环或函数中提前退出或跳过某些操作。它们的用途和区别如下:1.continue(跳过当前循环的剩余部分,进...

L017:continue和break - 教程文案

continue和break在Python中,continue和break是用于控制循环(如for和while)执行流程的关键字,它们的作用如下:1.continue:跳过当前迭代,...

作为前端开发者,你都经历过怎样的面试?

已经裸辞1个月了,最近开始投简历找工作,遇到各种各样的面试,今天分享一下。其实在职的时候也做过面试官,面试官时,感觉自己问的问题很难区分候选人的能力,最好的办法就是看看候选人的github上的代码仓库...

面试被问 const 是否不可变?这样回答才显功底

作为前端开发者,我在学习ES6特性时,总被const的"善变"搞得一头雾水——为什么用const声明的数组还能push元素?为什么基本类型赋值就会报错?直到翻遍MDN文档、对着内存图反...

2023金九银十必看前端面试题!2w字精品!

导文2023金九银十必看前端面试题!金九银十黄金期来了想要跳槽的小伙伴快来看啊CSS1.请解释CSS的盒模型是什么,并描述其组成部分。...

前端面试总结_前端面试题整理

记得当时大二的时候,看到实验室的学长学姐忙于各种春招,有些收获了大厂offer,有些还在苦苦面试,其实那时候的心里还蛮忐忑的,不知道自己大三的时候会是什么样的一个水平,所以从19年的寒假放完,大二下学...

由浅入深,66条JavaScript面试知识点(七)

作者:JakeZhang转发链接:https://juejin.im/post/5ef8377f6fb9a07e693a6061目录...

2024前端面试真题之—VUE篇_前端面试题vue2020及答案

添加图片注释,不超过140字(可选)...

今年最常见的前端面试题,你会做几道?

在面试或招聘前端开发人员时,期望、现实和需求之间总是存在着巨大差距。面试其实是一个交流想法的地方,挑战人们的思考方式,并客观地分析给定的问题。可以通过面试了解人们如何做出决策,了解一个人对技术和解决问...