docker
docker 在公司中经常要用到,一般用于部署项目,有专门的运维负责部署 测试、预发、生产 环境,需要根据每个项目进行配置 Dockerfile。
分环境进行配置
项目在配置各种环境的时候会区分多个分支,每个分支上面都会有对应的 Dockerfile ,一般情况下部署好一个项目环境之后是不会再去动这个项目的 Dockerfile ,然后使用流水线进行拉取对应分支进行部署项目对应的环境。
比如常用的 dev 作为开发、测试分支, pre 作为预发环境分支, prod 作为预发环境。
分环境启动方式在不同的分支上的 Dockerfile 配置对应的启动配置,例如下面这样为预发环境的配置信息:
FROM 10.220.99.162:5000/centos7:jdkpython-02
ENV TZ="Asia/Shanghai"
ENV PROFILE="default"
WORKDIR /opt
VOLUME /tmp
ADD target/*.jar /opt/app.jar
CMD ["java", "-jar", "-Dspring.profiles.active=pre","/opt/app.jar"]
这里只需要更改启动的配置文件即可,也就是 -Dspring.profiles.active= 这个后面的值。
python 环境依赖
上面是配置了对应的环境启动配置文件信息,但是还有个问题,由于 docker 拉取的镜像只有 pyhton 环境,但是在当前项目中还需要使用到 pandas 的包。
一开始我是让运维直接进入到容器当中执行 pandas 包依赖安装命令,确实安装好了 python 脚本也可以正常的运行,但是当我重启服务之后发现又少了 pandas 包。
这是因为 docker 的容器重新启动之后会把之前的依赖都重置,所以不能通过进入到容器中然后执行对应的安装命令。
解决办法就是在 Dockerfile 中添加安装的命令,这样每次 docker 容器在启动的时候都会去安装对应的依赖包, Dockerfile 中需要添加的配置如下:
RUN ["pip3","--default-timeout=100","install","pandas","-i","http://pypi.douban.com/simple/","--trusted-host","pypi.douban.com"]
需要注意的是这里前缀是 run 而不是 cmd。