一、在docker中安装python
1.1 输入镜像拉取命令
注意这里我们使用的是alpine版本,与常用版本没有太大的区别,主要的优点就是体积很小!!
docker pull python:3.8-alpine
1.2 查看镜像
1.3 运行
docker run -itd python:3.8-alpine /bin/sh
1.4 查看是否成功
1.5 查看python版本
docker exec -it py容器的id /bin/sh
退出ctrl+D
二、运行py文件
2.1准备运行所需文件
打包成镜像需要的Dockerfile文件,和requirement.txt文件
Dockerfile文件参考如下
#基于的基础镜像
FROM python:3.8.16
# 设置code文件夹是工作目录
WORKDIR /codepy1
# 复制该文件到工作目录中,./requirements.txt表示当前目录下的requirements.txt文件。这里 # 的/code/requirements.txt是docker内部自动生成的工作目录,不用自己创建的,请注意。
COPY ./requirements.txt /codepy1/requirements.txt
# 禁用缓存并批量安装包(后面的链接是利用豆瓣源安装,速度会加快)
RUN pip install --no-cache-dir --upgrade -r /codepy1/requirements.txt -i https://pypi.douban.com/simple/
# 复制代码到工作目录
COPY ./app /codepy1/app
#运行
CMD ["python", "/app/main.py"]
如何生成requestment.txt请看这篇文章:
Py自动生成requirements.txt文件_桂亭亭的博客-CSDN博客
2.2 准备文件夹
将事先准备好的文件放入新建的app文件夹中,Dockerfile可以等上传到服务器上时再写也行。
2.3 大概是这幅模样
2.4 打包上传到服务器上
Dockerfile的后缀名为没有,不是txt,如果有后缀运行是会报错的,请注意
2.5 构建镜像示例
docker build -t viewadd .
2.6 查看镜像
2.7 优化镜像的体积大小。
我们更改我们原来的Dockerfile文件,主要修改的就是版本号
#基于的基础镜像
FROM python:3.8-alpine
# 设置code文件夹是工作目录
WORKDIR /codepy1
# 复制该文件到工作目录中,./requirements.txt表示当前目录下的requirements.txt文件。这里 # 的/code/requirements.txt是docker内部自动生成的工作目录,不用自己创建的,请注意。
COPY ./requirements.txt /codepy1/requirements.txt
# 禁用缓存并批量安装包(后面的链接是利用豆瓣源安装,速度会加快)
RUN pip install --no-cache-dir --upgrade -r /codepy1/requirements.txt -i https://pypi.douban.com/simple/
# 复制代码到工作目录
COPY ./app /codepy1/app
#运行
CMD ["python", "/app/main.py"]
将原来的删除后
重新打包
docker build -t viewadd .
2.8 运行程序
可能会报错,如下。
修复错误
修改Dockerfile文件,注意我们更改了什么?
答:cmd运行的路径,一下是示例
#基于的基础镜像
FROM python:3.8-alpine
# 设置code文件夹是工作目录
WORKDIR /codepy1
# 复制该文件到工作目录中,./requirements.txt表示当前目录下的requirements.txt文件。这里 # 的/code/requirements.txt是docker内部自动生成的工作目录,不用自己创建的,请注意。
COPY ./requirements.txt /codepy1/requirements.txt
# 禁用缓存并批量安装包(后面的链接是利用豆瓣源安装,速度会加快)
RUN pip install --no-cache-dir --upgrade -r /codepy1/requirements.txt -i https://pypi.douban.com/simple/
# 复制代码到工作目录
COPY ./app /codepy1/app
#运行
CMD python /codepy1/app/main.py
版权归原作者 桂亭亭 所有, 如有侵权,请联系我们删除。