docker || python镜像制作

文章讲述了如何将Python项目打包上传到Linux系统,生成requirements.txt文件以便管理依赖,创建Dockerfile并解决依赖冲突,制作Docker镜像,启动容器。在遇到不允许的请求方法问题后,调整API访问方式。接着,文章介绍了添加MySQL数据库支持的过程,包括启动MySQL容器,导入数据,修改项目配置以连接数据库,重新构建镜像,并测试用户注册功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python镜像制作

1.将自己的python项目代码打包成一个压缩文件,传递到我们的linux系统里

2.生成项目所有的使用到的库,放到文件requirements.txt里,方便到容器里好安装该项目使用了哪些库

pip freeze >requirements.txt

3.将requirements.txt上传到linux系统里,然后制作镜像使用

步骤

第1步:将python代码打包成一个压缩文件

用xftp上传到Linux里;使用upzip解压。

[root@docker zhang]# ls
flask-car-news.zip

[root@docker zhang]# unzip flask-car-news.zip 
[root@docker zhang]# ls
flask-car-news

第2步:生成python项目所有使用的库

放到文件requirement.txt里。

[root@docker zhang]# pip freeze >requirements.txt
[root@docker zhang]# ls
flask-car-news  requirements.txt

第3步:编写Dokcerfile文件。

[root@docker zhang]# vim Dockerfile 
FROM python:3.9
WORKDIR /app
COPY . /app
RUN pip install --trusted-host  pypi.python.org -r requirements.txt -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
EXPOSE 8000
ENV NAME car_news
ENV AUTHOR zhang
CMD ["python","/app/flask-car-news/server.py"]

[root@docker zhang]# ls
Dockerfile  flask-car-news  requirements.txt

第4步:制作镜像。

[root@docker zhang]# docker build -t zhang-car-news:1.0 .
.1.3 because these package versions have conflicting dependencies.
#0 74.44 
#0 74.44 The conflict is caused by:
#0 74.44     The user requested click==8.1.3
#0 74.44     click-didyoumean 0.3.0 depends on click>=7
#0 74.44     click-plugins 1.1.1 depends on click>=4.0
#0 74.44     click-repl 0.2.0 depends on click
#0 74.44     flask 1.1.4 depends on click<8.0 and >=5.1

这里遇到一个问题,click==8.1.3,版本高了。

解决办法:click降低版本。

vim requirements.txt

click==7.1.2

再次进行镜像制作。

[root@docker zhang]# docker build -t zhang-car-news:1.0 .

第5步:启动容器

使用zhang-car-news:1.0镜像

[root@docker zhang]# docker run -d -p7001:8000 --name zhang-flask-1  zhang-car-news:1.0
[root@docker zhang]# docker ps
CONTAINER ID   IMAGE                COMMAND                   CREATED          STATUS          PORTS                                       NAMES
7c5568f27cca   zhang-car-news:1.0   "python /app/flask-c…"   21 minutes ago   Up 21 minutes   0.0.0.0:7001->8000/tcp, :::7001->8000/tcp   zhang-flask-1

第6步:测试访问

windows里浏览器直接访问:

http://192.168.102.136:7001/v1/user

{

"message": "The method is not allowed for the requested URL."

}

说明方法不对,解决办法:ApiPost6里使用post方法进行访问。

因为没有数据库的支持,所以显示是正常的。

第7步:提供数据库支持

安装mysql的容器,导入初始化数据。

[root@docker zhang]# docker run -d -p33060:3306 --name zhang-mysql-1 -e MYSQL_ROOT_PASSWORD='sc123456' mysql:5.7.41

第8步:导入初始化数据

使用sqlyog+导出的sql文件。

第9步:修改flask项目的配置数据库的源代码

配置好连接的mysql的用户名和密码,主机名。因为容器启动后才能知道它的ip,所以使用域名来访问,通过--link绑定。

[root@docker config]# vim settings.py 
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:sc123456@zhang_mysql/flask?charset=utf8'

root:Sc123456 用户名和密码

zhang_mysql 容器的名字

第10步:重新制作镜像

[root@docker zhang]# docker build -t zhang-car-news:1.2 .
[root@docker zhang]# docker images
REPOSITORY                             TAG            IMAGE ID       CREATED         SIZE
zhang-car-news                         1.2            a0a95e01f33e   11 hours ago    998MB
zhang-car-news                         1.0            aa6f6a4ed5e2   12 hours ago    998MB

第11步:删除之前的容器

重新启动flask容器链接到MySQL容器。

[root@docker zhang]# docker stop zhang-flask-1
[root@docker zhang]# docker rm zhang-flask-1

[root@docker zhang]# docker run -d -p7001:8000 --name zhang-flask-1 --link zhang-mysql-1:zhang_mysql zhang-car-news:1.2
[root@docker zhang]# docker ps
CONTAINER ID   IMAGE                COMMAND                   CREATED         STATUS         PORTS                                                    NAMES
4733221fbb10   zhang-car-news:1.2   "python /app/flask-c…"   3 seconds ago   Up 1 second    0.0.0.0:7001->8000/tcp, :::7001->8000/tcp                zhang-flask-1
96983f462fd4   mysql:5.7.41         "docker-entrypoint.s…"   8 minutes ago   Up 8 minutes   33060/tcp, 0.0.0.0:33060->3306/tcp, :::33060->3306/tcp   zhang-mysql-1

第12步:使用ApiPost6 测试注册

http://192.168.102.136:7001/v1/user 使用POST方法

{

"username":"liujun",

"password":"1234567",

"email":"6958117697@qq.com"

}

第13步:到数据库里查询是否注册成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韩未零

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值