您现在的位置是:首页 > 正文

python项目打包成docker镜像并发布 热门推荐

2024-04-01 01:29:30阅读 3

本文以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 base_hrms: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项目了。

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

网站文章

  • 结构体——小结

    结构体——小结

    一,结构体优点如下,(1)可以包含不同数据类型的一个结构体(2)相同的结构体变量是可以相互赋值的(3)节省内存空间 注意:结构体声明的时候本身不占用任何内存空间,只有当你用你定义的结构体类型定义结构体变量的时候计算机才会分配内存。 直接内存操作避免了栈空间开辟结构变量空间的需求,节省内存。(4)效率高 根据反汇编的思想,结构体在栈中是离散的,而数组在...

    2024-04-01 01:29:25
  • CRMEB单商户v4.x及CRMEB Pro系统验证码不显示问题解决

    CRMEB单商户v4.x及CRMEB Pro系统验证码不显示问题解决

    问题: network报错信息: {"status":400,"msg":"include(): the code loader version is...

    2024-04-01 01:28:59
  • 深度学习课程设计——波士顿房价预测

    深度学习课程设计——波士顿房价预测

    基于神经网络回归的波士顿房价预测 摘 要 神经网络是从信息处理角度对人脑神经元网络进行抽象,建立某种模型,按不同的连接方式组成不同的网络。本文以波士顿房价这一经典数据集为基础,该数据集包含了住宅用地所...

    2024-04-01 01:28:50
  • Docker 环境搭建

    Docker 环境搭建

    建议更换版本:3-management。#进入到容器内部执行插件激活。

    2024-04-01 01:28:42
  • CSS的苹果兼容

    CSS的苹果兼容

    2019独角兽企业重金招聘Python工程师标准>>> ...

    2024-04-01 01:28:19
  • 万用表测量二极管

    万用表测量二极管

    测量二极管正负 一个正常的二极管,用指针表的电阻档测,若处于导通状态,是不是黑表笔接触的一级为二极管的正极,红表笔为负极!用数字表测,若处于导通状态,结论正好相反(红表笔为正极)!是这样的吗 首先要知道: 用指针式万用表测量二极管得出的是二极管的正反向电阻。 用数字式万用表测量二极管得出的是二极管的导通压降。 另外还要知道: 指针式万用表的红、黑表笔在表内是通过元器件分别连接到工作电池的负、

    2024-04-01 01:28:11
  • 第三节 python 运算符

    第三节 python 运算符

    算术运算符 算术运算符 描述 + 加 - 减 * 乘 / 除(在Python中除法的运算结果为浮点数) // 商运算,整除求商 % 模运算,整除取余 ** 幂运算 求商是向下取整。 向下取整,就是在左...

    2024-04-01 01:28:04
  • mysql5.7 源码安装

    mysql5.7 源码安装

    2024-04-01 01:27:59
  • WEBRTC浅析(七)GCC之Receiver Estimated Maximum Bitrate的协议简析

    WEBRTC浅析(七)GCC:: Receiver Estimated Maximum Bitrate的协议简析接收端的带宽估计 (Receiver Estimated Maximum Bitrate...

    2024-04-01 01:27:34
  • x265笔记_3_并行处理机制

    x265笔记_3_并行处理机制

    HEVC中的并行处理机制,x265中的并行处理

    2024-04-01 01:27:27