在docker安装Python环境提供给其他docker使用

news/2024/9/29 18:44:51
  • 1. 在宿主机新建一个目录
  • 2. 在app目录下新建一个Dockerfile文件
  • 本文永久更新地址:

1. 在宿主机新建一个目录

在宿主机上新建一个目录如app/,在app目录里面导入项目需要依赖的包

在项目根目录下输入命令,导出python项目所有的依赖包

pip freeze > requirements.txt

把导出的requirements.txt文件复制到新建的宿主机的app目录

image-20230410161722507

2. 在app目录下新建一个Dockerfile文件

新建的Dockerfile文件用来构建python镜像

FROM  python:3.7-bullseye
WORKDIR .
USER root
RUN apt-get update \&& apt-get install -y gcc
ADD ./requirements.txt .
RUN pip3 install --upgrade pip
RUN pip3 install virtualenvwrapper
RUN pip3 install -r requirements.txt
#-i https://pypi.tuna.tsinghua.edu.cn/simple #安装依赖包

保存后,构建镜像文件

docker build -t mypython3 . # -t:镜像名称,点(.)代表是当前目录

image-20230410162908984

查看构建好的镜像

image-20230411143121564

在jenkins的shell脚本输入一下内容,或者把一下内容放到一个sh脚本中在jenkins中执行shell脚本

echo "运行容器python" #输出日志
docker run --rm -w=$WORKSPACE --volumes-from=jenkins mypython3 $python $file
echo "python执行成功"#--rm:选项表示退出容器时会自动将其删除# -w: 指定命令执行时,所在的路径,$WORKSPACE就是jenkins运行时的工作目录#--volumes-from:容器通过挂载这个(父容器)实现数据共享,后面跟着父容器的容器名称,父容器可以不启动
# mypython3:python打包后的镜像名称
# $python $file,是两个动态参数替换制作镜像CMD ["python3", "main.py"] 里面的值

image-20230411173439224

docker 运行一个jenkins命令

docker run --name jenkins -p 8082:8080   -u root -v /var/mydata/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -d --restart always jenkins/jenkins
-u root。通过root用户启用jenkins 否则在jenkins中执行docker命令会提示没有权限
注意这两个volume参数(将jenkins容器内的docker命令指向了宿主机):
-v /var/run/docker.sock:/var/run/docker.sock 
-v $(which docker):/usr/bin/docker 之后直接在jenkins的project里面就可以使用docker命令了

启用jenkins后,新建任务 ,在shell命令框可以直接输入docker命令运行

添加两个文本参数python,file

image-20230411173111754

执行shell脚本时,动态传入参数

image-20230411173204554


本文永久更新地址:

https://www.fenxiangbe.com/p/在docker安装Python环境提供给其他docker使用.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/66268.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

南沙C++信奥赛陈老师解一本通题 1942:【08NOIP普及组】ISBN号码

​【题目描述】每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版…

9.29每日总结

今天做完了“四则运算”和“生成验证码”,其中“生成验证码”这道题暑假的时候跟着网课做过初级版的,今天又加以改进了不少,为此把黑马的字符串章节差不多看完了,收获比较大的除了StringBuilder和StringJoiner之外,就是“验证码”这道题中用到的字符串转为字符数组(toCha…

《密码系统设计》第四周

第四周预习报告 学习内容Head First C 嗨翻 C 语言 第5章 《Windows C/C++加密解密实战》第 6,8,13,14 章 重点第14 章,第 6 章了解 ,第 8,13 参考 课程 mindmap 报告内容参考第一周AI 对学习内容的总结(1分) 要求让AI阅读学习内容并进行总结总结 1. Head First C 嗨翻 …

自然资源领域的组件报批:守护绿水青山的智慧钥匙

在追求绿色发展的今天,自然资源的合理利用与有效保护成为了社会关注的焦点。组件报批作为自然资源开发与保护的前置门槛,如同一把精密的钥匙,解锁着可持续发展的大门。本文将带您走进自然资源领域的组件报批世界,探析其背后的逻辑、重要性以及如何在实践中更好地守护我们的…

GIS在构建虚拟世界中的新机遇

地理信息系统(GIS)技术在构建虚拟世界中扮演着越来越重要的角色。随着数字孪生、虚拟现实(VR)、增强现实(AR)和混合现实(MR)等技术的发展,GIS为虚拟世界提供了地理信息和数据支持,增强了虚拟环境的真实感和交互性。1. 虚拟空间构建GIS技术可以获取地球表面的高程、坡…

C++的并发编程历史

多线程环境 并非所有的语言都提供了多线程的环境。即便是C++语言,直到C++11标准之前,也是没有多线程支持的。 在这种情况下,Linux/Unix平台下的开发者通常会使用POSIX Threads,Windows上的开发者也会有相应的接口。 但很明显,这些API都只针对特定的操作系统平台,可移植性…

课后练习-登录-2024/9/29

该登录界面是用JOptionPane弹窗接收用户名和密码,之后在数据库中搜索是否存在,最后显示登录成功与否实现 loginTest.java package JDBC_Test;import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSour…