-
创建数据库
-
taskSrv build
#!/bin/bash
# taskSrv 容器构建脚本
usage()
{
echo "使用方法:"
echo " build_taskSrv.sh [-p path] [-t tag_name] [-f dockerfile_name] [-h help]"
echo "详细介绍:"
echo " path, 镜像编译的主目录, 约定为项目顶级目录下."
echo " tag_name, 镜像的 tag 名称"
echo " dockerfile_name, 镜像的 dockerfile 文件名"
echo " help, 帮助信息"
exit -1
}
path="/usr/fin/taskSrv"
tag_name="fin:taskSrv_v`date +%Y%m%d%H%M`"
dockerfile_name="taskSrv_v20190301.dockerfile"
while getopts "p:t:f:h" arg #选项后面的冒号表示该选项需要参数
do
case $arg in
p) path="$OPTARG";;
t) tag_name="$OPTARG";;
f) dockerfile_name="$OPTARG";;
h) usage;;
?) usage;;
esac
done
echo "path=$path"
echo "tag_name=$tag_name"
echo "dockerfile_name=$dockerfile_name"
cd $path \
&& sudo docker build -t $tag_name -f $dockerfile_name .
- taskSrv dockerfile
FROM python:3.7.2-slim-stretch
# taskSrv基础镜像
MAINTAINER FinTester Helix
# 替换sources.list
COPY sources.list /etc/apt/sources.list
# 复制当前上下文目录下 requirements.txt 文件
COPY requirements.txt ./
# 挂载 任务服务路径
VOLUME ["/usr/fin/taskSrv", "/usr/fin/logs"]
# Flask环境参数变量
ENV FLASK_ENV production
ENV SECRET_KEY 12345sahngshandalaohu
# 设置时区,执行更新 通过requirements.txt 安装python库依赖
RUN mkdir /root/.pip/ \
&& /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone \
&& pip3.7 install -i http://10.201.5.161:9090/simple/ --trusted-host 10.201.5.161 -r requirements.txt \
&& rm -rf /tmp/* /var/lib/apt/* /var/cache/* /var/log/* \
&& find /usr -depth \
\( \
\( -type d -a \( -name test -o -name tests \) \) \
-o \
\( -type f -a \( -name '*.pyc' -o -name '*.pyo' \) \) \
\) -exec rm -rf '{}' +;
# 暴露 9998 端口
EXPOSE 9998
# 指定工作目录
WORKDIR /usr/fin/taskSrv
# 执行命令启动gunicorn
CMD gunicorn taskSrvRun:createApp\(\) -b 0.0.0.0:$PORT -w 4 --preload
- task
#!/bin/bash
# taskSrv 容器构建脚本
usage()
{
echo "使用方法:"
echo " build_taskSrv.sh [-p path] [-t tag_name] [-f dockerfile_name] [-h help]"
echo "详细介绍:"
echo " path, 镜像编译的主目录, 约定为项目顶级目录下."
echo " tag_name, 镜像的 tag 名称"
echo " dockerfile_name, 镜像的 dockerfile 文件名"
echo " help, 帮助信息"
exit -1
}
path="/usr/fin/taskSrv"
tag_name="fin:taskSrv_taskProcess_v`date +%Y%m%d%H%M`"
dockerfile_name="taskSrv_v20190301_taskProcess.dockerfile"
while getopts "p:t:f:h" arg #选项后面的冒号表示该选项需要参数
do
case $arg in
p) path="$OPTARG";;
t) tag_name="$OPTARG";;
f) dockerfile_name="$OPTARG";;
h) usage;;
?) usage;;
esac
done
echo "path=$path"
echo "tag_name=$tag_name"
echo "dockerfile_name=$dockerfile_name"
cd $path \
&& sudo docker build -t $tag_name -f $dockerfile_name .
# taskSrv基础镜像
MAINTAINER FinTester Helix
# 替换sources.list
COPY sources.list /etc/apt/sources.list
# 复制当前上下文目录下 requirements.txt 文件
COPY requirements.txt ./
# 挂载 任务服务路径
VOLUME ["/usr/fin/taskSrv", "/usr/fin/logs"]
# Flask环境参数变量
ENV FLASK_ENV production
ENV SECRET_KEY 12345sahngshandalaohu
ENV RUN_SCHEDULER_TASKS true
# 设置时区,执行更新 通过requirements.txt 安装python库依赖
RUN mkdir /root/.pip/ \
&& /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone \
&& echo '[global]' >> /root/.pip/pip.conf \
&& echo 'trusted-host=mirrors.aliyun.com' >> /root/.pip/pip.conf \
&& echo 'index-url=https://mirrors.aliyun.com/pypi/simple/' >> /root/.pip/pip.conf \
&& pip3.7 install -r requirements.txt \
&& rm -rf /tmp/* /var/lib/apt/* /var/cache/* /var/log/* \
&& find /usr -depth \
\( \
\( -type d -a \( -name test -o -name tests \) \) \
-o \
\( -type f -a \( -name '*.pyc' -o -name '*.pyo' \) \) \
\) -exec rm -rf '{}' +;
# 暴露 9996 端口
EXPOSE 9996
# 指定工作目录
WORKDIR /usr/fin/taskSrv
# 执行命令启动
CMD flask run -h 0.0.0.0 -p $PORT --no-debugger --without-threads
docker部署参考文档:
https://yeasy.gitbooks.io/docker_practice/content/image/multistage-builds/