发布于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黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!