之前做的都是docker中的jenkins部署boot项目 现在公司的项目是在docker中跑的 python项目 不需要打包了 需要jenkins来部署docker及传输代码至docker中
基本上都是围绕这Dockerfile来转!
系统:Ubuntu 18.4 docker 及 jenkins等DevOps工具已有
一:创建Dockerfile(文后会贴出)
二:创建jenkins Item (jenkins的全局变量,Key和SSH信息以填写,这些网上很多,在这就不多说了)
1,先做images 创建了一个名为test_images的Item 因为只是创建images 所以这个的源码管理那栏就直接留空
这个创建images就完成了 重头戏 dockerfile 后面在详解 SSH site那行格式为root@IP:port
2,创建docker 镜像及上传代码至服务器
源码管理那栏就填写gitlab或者github信息 这个在我以前文档中 读者可以翻看一下,master或者DEV分支啥的都可以设置选择。
然后构建后操作里面和以前一样 增加信息即可
重点说一下远程目录这个 在dockerfile里面 设置了docker拉去宿主机的文件,也就是代码 docker要拉去宿主机的话只能拉去上下文的代码 这个通俗解释想要add/copy,文件必须在Dockerfile同一个根目录下。 如果dockerfile在/home/docker下 那么 把你要用的文件放在/home/docker下,那么 dockerfile里面的COPY 就只需要写 /(文件名)就行
这样第一个Item创建images 第二个Item传输代码和重启 就完成了自动发布。
重头戏:Dockerfile
贴上Dockerfile供大家参考
FROM ubuntu #乌班图系统
MAINTAINER from leo
RUN apt-get update
RUN apt-get install -y python3.7
RUN apt-get install -y curl
WORKDIR /root
RUN python3.7 get-pip.py
RUN mkdir -p /root/test
RUN pip install test 这些其实用一个RUN就行 写成 RUN XX \ XX \ XX 格式
RUN pip install test
RUN pip install test 安装一些需要的插件
WORKDIR /root
RUN tar -zxvf xxxxxx.tar.gz
WORKDIR ta-lib/
RUN apt-get install -y gcc build-essential
RUN ./configure
RUN make
RUN make install 编译安装dockerfile都支持
RUN apt-get install -y python3.7-dev
ENV MYSQL_HOST=xx.xx.xx.xx
#ENV PATH=$DB_HOST/bin:$PATH
#ENV PATH DB_HOST 设置环境变量 注释掉的两个是测试用
ENV USER_NAME=xxxxx
ENV password=xxxxxxx
EXPOSE 5000:5000 端口映射
COPY /test /root/test
#这里就是之前说的目录从宿主机的/var/lib/XXX下拷贝test到docker内的root下
WORKDIR /root/test #切换到test下
CMD [ "python3", "./test.py" ] # docker run时直接开跑
总结:就是做一个在docker run 时 会执行 python XX.py的dockerfile 这个第一次跑的时候需要把代码先丢到宿主机上 不然docker在执行dockerfile时 执行到 COPY那步会因为找不见文件而断