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

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐