如何简单优雅的来用Docker布置Python环境跑脚本【Linux / 宝塔】
- 如何简单优雅的来用Docker布置Python环境跑脚本【Linux / 宝塔】
- 建议用宝塔,来安装Docker,贼方便!
- 我们得创建一个Dockerfile文件,无需后缀
- 这是我的Dockerfile文件里的内容
- 下面我们来安装docker镜像image
- 进入到准备好的文件夹内准备安装
- 另外我在第一部分也分享了宝塔的管理菜单,你也可以在那里进行操作安排。
- 结束语
如何简单优雅的来用Docker布置Python环境跑脚本【Linux / 宝塔】
建议用宝塔,来安装Docker,贼方便!
是不是很离谱?哈哈哈哈!
Linux终端安装方法请自行查找,我就不赘述了。
我们得创建一个Dockerfile文件,无需后缀
这是我的Dockerfile文件里的内容
我的Dockerfile文本里面主要是两个部分
- 布置Python环境的
- 设置Docker镜像与服务器时间同步的,原文指导
# 这是我们的配置环境,可以根据自己代码的情况来进行选择
FROM python:3.8
# 自己的署名,写不写无所谓
MAINTAINER xstormLeigh<678491@bb.cc>
# 我们设置时区,主要是为了镜像与服务器的同步时间用的
#添加时区环境变量,亚洲,上海
ENV TimeZone=Asia/Shanghai
# 设置工作目录,建议把你的要的文件都扔进这个文件夹,./的意思是当前文件夹的意思
WORKDIR ./
# 将文件夹里所有的文件复制到Docker镜像内
COPY . .
# 运行时区同步代码
# 使用软连接,并且将时区配置覆盖/etc/timezone
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone
# 运行Python 的 requirements.txt 文件来部署当前Python的环境
RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 最后在终端下需要执行的的指令
CMD ["python", "xxxxx.py"]
- 帮助大家如何一键搞定
requirements.txt
文件,真的是非常的好用。
首先大家需要安装一个库pip install pipreqs
然后在你的项目文件夹下的终端内输入> pipreqs ./ --encoding=utf-8 --force
就会自动生成requirements.txt
文件啦。
下面我们来安装docker镜像image
进入到准备好的文件夹内准备安装
先看看是不是把所有的文件都准备好了,然后在Linux终端输入以下指令:
sudo docker build -t pyvisiteur[这里是的镜像名称] .
以下是服务器运行的Log
打印,供大家学习参考。
在[root@VM-20-3-centos Visitor]# sudo docker build -t pyvisiteur .
Sending build context to Docker daemon 124.9kB
Step 1/8 : FROM python:3.8
---> 34fed916a9ea
Step 2/8 : MAINTAINER xstormLeigh<678491@bb.cc>
---> Running in 603379b13e7b
Removing intermediate container 603379b13e7b
---> 9197e128d6d3
Step 3/8 : ENV TimeZone=Asia/Shanghai
---> Running in dddd16b30e2d
Removing intermediate container dddd16b30e2d
---> 4babb33091cf
Step 4/8 : WORKDIR ./
---> Running in 861b591867de
Removing intermediate container 861b591867de
---> 6f6d1e13b441
Step 5/8 : COPY . .
---> 0514c52c69de
Step 6/8 : RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone #使用软连接,并且将时区配置覆盖/etc/timezone
---> Running in 142d02e39fd8
Removing intermediate container 142d02e39fd8
---> 2870c05c117d
Step 7/8 : RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
---> Running in 71755a63e285
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting fake_useragent==0.1.11
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/d1/79/af647635d6968e2deb57a208d309f6069d31cb138066d7e821e575112a80/fake-useragent-0.1.11.tar.gz (13 kB)
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status 'done'
Collecting numpy==1.21.5
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/9c/ac/bd195e349dd5cacd6b8bbae2100c43017a57b27dbd0c6d99471c8f16a41d/numpy-1.21.5-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (15.7 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 15.7/15.7 MB 2.6 MB/s eta 0:00:00
Collecting requests==2.27.1
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/2d/61/08076519c80041bc0ffa1a8af0cbd3bf3e2b62af10435d269a9d0f40564d/requests-2.27.1-py2.py3-none-any.whl (63 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 63.1/63.1 KB 9.1 MB/s eta 0:00:00
Collecting urllib3<1.27,>=1.21.1
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/6f/de/5be2e3eed8426f871b170663333a0f627fc2924cc386cd41be065e7ea870/urllib3-1.26.12-py2.py3-none-any.whl (140 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 140.4/140.4 KB 2.4 MB/s eta 0:00:00
Collecting certifi>=2017.4.17
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/1d/38/fa96a426e0c0e68aabc68e896584b83ad1eec779265a028e156ce509630e/certifi-2022.9.24-py3-none-any.whl (161 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 161.1/161.1 KB 2.9 MB/s eta 0:00:00
Collecting idna<4,>=2.5
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/fc/34/3030de6f1370931b9dbb4dad48f6ab1015ab1d32447850b9fc94e60097be/idna-3.4-py3-none-any.whl (61 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.5/61.5 KB 156.1 MB/s eta 0:00:00
Collecting charset-normalizer~=2.0.0
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/06/b3/24afc8868eba069a7f03650ac750a778862dc34941a4bebeb58706715726/charset_normalizer-2.0.12-py3-none-any.whl (39 kB)
Installing collected packages: urllib3, numpy, idna, charset-normalizer, certifi, requests
Successfully installed certifi-2022.9.24 charset-normalizer-2.0.12 fake_useragent-0.1.11 idna-3.4 numpy-1.21.5 requests-2.27.1 urllib3-1.26.12
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
WARNING: You are using pip version 22.0.4; however, version 22.2.2 is available.
You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.
Removing intermediate container 71755a63e285
---> 7416958ca4e6
Step 8/8 : CMD ["python", "visitors.py"]
---> Running in c2f352ba2053
Removing intermediate container c2f352ba2053
---> 61f6e9be3117
Successfully built 61f6e9be3117
Successfully tagged pyvisiteur:latest
[root@VM-20-3-centos Visitor]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c3a7759e7b81 pyvisitors "python visitors.py" 14 hours ago Exited (0) 9 hours ago boring_elbakyan
[root@VM-20-3-centos Visitor]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
pyvisiteur latest 61f6e9be3117 38 seconds ago 985MB
pyvisitors latest 1f1ddc8f65ac 14 hours ago 985MB
python 3.8 34fed916a9ea 4 days ago 913MB
[root@VM-20-3-centos Visitor]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4ec7d9642572 pyvisiteur "python visitors.py" 9 seconds ago Up 8 seconds quizzical_greider
c3a7759e7b81 pyvisitors "python visitors.py" 14 hours ago Exited (0) 9 hours ago boring_elbakyan
[root@VM-20-3-centos Visitor]#
这样我们就布置好了一个Docker镜像Image。
- 我们可以通过
docker images
来查看我们的镜像信息。 - 用
docker run [镜像名称]
来运行我们指定的镜像,然后镜像会开启一个容器。 - 用
docker ps -a
来查看镜像下的容器信息。 - 用
docker logs [容器的ID]
来查看容器输出的log信息,如果有。 - 用
sudo docker rm `docker ps -a|grep Exited|awk '{print $1}'`
清理已结束(标记为Exited)的容器。 - 或用
sudo docker rm $(sudo docker ps -a -q)
清理未运行的容器。 - 或用
sudo docker container prune
清理孤立的容器。 - 更多繁琐的docker指令可以自行查找,网上又很多教程。
另外我在第一部分也分享了宝塔的管理菜单,你也可以在那里进行操作安排。
结束语
希望能和大家多多沟通交流学习!