赞
踩
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步:最后到数据库里查询是否注册成功。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。