python項目打包成docker鏡像並發布


python項目打包成docker鏡像並發布
原創藍綠色~菠菜 最后發布於2019-06-20 09:34:01 閱讀數 6099 收藏
展開
本文以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項目了。

 

更詳細的啟動項目方法可以看我的另外兩篇文章。

 
————————————————
版權聲明:本文為CSDN博主「藍綠色~菠菜」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/bocai_xiaodaidai/article/details/92838984


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM