docker项目部署

  1. 创建数据库
    在这里插入图片描述

  2. 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 .
  1. 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

  1. 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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值