程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2024-11(3)

python项目打包成docker镜像并发布

发布于2019-08-07 13:35     阅读(657)     评论(0)     点赞(2)     收藏(0)


本文以django项目为例,演示docker镜像的制作过程。

开始之前做个必要的解释:

基础镜像:镜像中运行的项目或者启动的一些服务,都要在一个基础镜像之上才能运行这些服务,比如一个django项目或者mysql数据库等,都要在Linux操作系统之上来运行,所以打包我们自己的项目时,必须要有个基础镜像来当作我们项目运行的基础环境。

下面开始进入主题:

首先来看下目录结构:

在项目根目录的同级目录下新建Dockerfile文件,这个Dockerfile就作为打包项目的配置文件,但是在这之前我还要做一件事情:就是将python依赖的一些基础环境打包成一个基础镜像,作为我们以后制作项目镜像的基础镜像,所以就有了base_image目录下的Dockerfile文件。

一、基础镜像制作

1、基础镜像的Dockerfile:

#基础镜像为centos,版本为7,build镜像时会自动下载
FROM centos:7  
 
#制作者信息
MAINTAINER bocai@baicai.com

#设置环境变量
ENV CODE_DIR=/opt/hrms
ENV DOCKER_SCRIPTS=$CODE_DIR/base_image/scripts

#将scripts下的文件复制到镜像中的DOCKER_SCRIPTS目录
COPY ./scripts/* $DOCKER_SCRIPTS/

#执行镜像中的provision.sh脚本
RUN chmod a+x $DOCKER_SCRIPTS/*
RUN $DOCKER_SCRIPTS/provision.sh

2、provision.sh文件:

#!/bin/bash
set -e

#python的一些依赖
yum install -y \
    kde-l10n-Chinese\
    glibc-common\
    git\
    wget\
    mysql-devel\
    gcc\
    swig\
    pulseaudio\
    pulseaudio-libs\
    pulseaudio-libs-devel\
    zlib-devel\
    bzip2-devel\
    openssl-devel\
    ncurses-devel\
    sqlite-devel\
    readline-devel\
    tk-devel\
    gdbm-devel\
    db4-devel\
    libpcap-devel\
    xz-devel\
    libffi-devel\
    ncurese-devel\
    automake\
    autoconf\
    libtool\
    make\
    alsa-lib-devel\
    poppler-utils\


#python3.5
wget https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tgz
tar -zxvf Python-3.5.4.tgz
cd Python-3.5.4
./configure
make && make install
rm -rf Python-3.5.4*

#pip3
wget --no-check-certificate https://github.com/pypa/pip/archive/9.0.1.tar.gz
tar -zvxf 9.0.1.tar.gz
cd pip-9.0.1
python3.5 setup.py install
rm -rf pip-9.0.1*
pip3 install --upgrade setuptools

3、build基础镜像

接下来就可以build基础镜像了:

切换到base_image文件夹下,执行如下命令就可以生成我们自己的基础镜像了,名字叫hrms_base版本v1.2:

docker build -t hrms_base:v1.2 .

二、项目镜像制作

1、项目镜像的Dockerfile:

#基础镜像
FROM base_hrms:v1.2

#语言编码设置
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
ENV LC_ALL zh_CN.UTF-8


#将项目目录文件复制到镜像中,CODE_DIR是在基础镜像中定义的
COPY ./hrms $CODE_DIR/hrms/


#安装项目依赖包
RUN pip3 install -r $CODE_DIR/hrms/requirements.txt

#暴露端口
EXPOSE 8080


#启动项目
CMD ["python3.5", "/opt/hrms/hrms/manage.py", "runserver", "0.0.0.0:8080"]

2、build项目镜像

切换到Dockerfile所在目录下,执行如下命令就可以生成项目镜像了,名字叫hrms版本v1.2:

docker build -t hrms:v1.2 .

三、启动镜像

1、docker images 查看镜像:

2、docker run -it -p 10.156.25.3:443:8080  3bd0eef03413 启动镜像(10.156.25.3是宿主机的ip,意思是将镜像的8080端口映射到宿主机的443端口上)

3、此时就可以通过10.156.25.3:443访问django项目了。

 

更详细的启动项目方法可以看我的另外两篇文章。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



所属网站分类: 技术文章 > 博客

作者:妖怪还我师傅

链接:https://www.pythonheidong.com/blog/article/11241/24f2895e01c649e66041/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

2 0
收藏该文
已收藏

评论内容:(最多支持255个字符)