python项目打包成docker镜像并发布运行
本文以django项目为例,演示docker镜像的制作过程。一.目录结构:├─base_img│├─Dockerfile//django项目镜像的Dockerfile│└─opapi//django项目│├─.vscode│├─logs│├─middleware│├─python_agency│├─manage.py│├─requirements.txt│├─db
·
本文以django项目为例,演示docker镜像的制作过程。
一.目录结构:
├─base_img
│ ├─Dockerfile //django项目镜像的Dockerfile
│ └─opapi //django项目
│ ├─.vscode
│ ├─logs
│ ├─middleware
│ ├─python_agency
│ ├─manage.py
│ ├─requirements.txt
│ ├─db.sqlite3
│ └─readme.md
│
└─python
├─Dockerfile //python环境镜像的Dockerfile
└─python
└─provision.sh //python安装脚本
二、python镜像制作
1、python镜像制作Dockerfile:
#基础镜像为centos,版本为7,build镜像时会自动下载
FROM centos:7
#制作者信息
MAINTAINER 1298852829@qq.com
#设置环境变量
ENV CODE_DIR=/opt
ENV DOCKER_SCRIPTS=$CODE_DIR/python
#将scripts下的文件复制到镜像中的DOCKER_SCRIPTS目录
COPY ./python/* $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.7
wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz
tar -zxvf Python-3.7.4.tgz
cd Python-3.7.4
./configure
make && make install
rm -rf Python-3.7.4
#pip3
pip3 install --upgrade pip
3、构建python镜像
切换到python文件夹下,执行如下命令就可以生成我们自己的基础镜像了,名字叫python版本3.7:
docker build -t python:3.7 .
二、项目镜像制作
1、项目镜像的Dockerfile:
#基于的基础镜像
FROM python:3.7
#语言编码设置
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
ENV LC_ALL zh_CN.UTF-8
#将项目目录文件复制到镜像中,CODE_DIR是在基础镜像中定义的
COPY ./opapi $CODE_DIR/opapi/
#安装项目依赖包
RUN pip3 install -r $CODE_DIR/opapi/requirements.txt
#暴露端口
EXPOSE 8080
#启动项目
CMD ["python", "$CODE_DIR/opapi/manage.py", "runserver", "0.0.0.0:8080"]
2、build项目镜像
切换到Dockerfile所在目录下,执行如下命令就可以生成项目镜像了,名字叫opapi版本1.0:
docker build -t opapi:1.0 .
三、启动镜像
1、 查看镜像:
docker images
2、启动镜像
docker run -it -p 0.0.0.0:8080:8080 27bdd5bd718f
注:0.0.0.0是宿主机的ip,意思是将镜像的8080端口映射到宿主机的8080端口上
3、此时就可以通过Ip:8080访问django项目了。
更多推荐
已为社区贡献1条内容
所有评论(0)