Docker实战-构建Apache+wsgi+Django镜像
使用commit构建Apache+wsgi+Django镜像
**docker commit :**从容器创建一个新的镜像
运行一个基础镜像
1 |
|
- -d: 后台运行容器,并返回容器ID;
- -i: 以交互模式运行容器,通常与 -t 同时使用;
- -P: 随机端口映射,容器内部端口随机映射到主机的高端口
- -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
- -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- docker exec :在运行的容器中执行命令
通过 docker ps -a 命令查看已经在运行的容器,然后使用容器 ID在容器中开启一个交互模式的终端
1 |
|
交互模式进入容器:
1 |
|
安装需要的软件包以及模块
安装pip源
yum updata
yum -y install epel-release
编辑文件的每一个[epel]的第三行去掉注释,第四行注释掉,完成效果如下
1 |
|
1 |
|
安装环境软件
yum –enablerepo=epel install -y python-pip
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.6.2
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple djangorestframework==2.3.14
yum install -y gcc libffi-devel python-devel openssl-devel
yum install -y mysql-devel python-devel python-setuptools
pip install MySQL-python
安装apache
1 |
|
1 |
|
查看apache是否启动
1 |
|
启动Apache网站检查
1 |
|
安装python2.7的mod_wsgi
1 |
|
配置apache加载wsgi模块
使用mod_wsgi-express install-module查询mod_wsgi.so的路径,输出如下:
1 |
|
在Apache模块配置目录/etc/httpd/conf.d/创建一个mod_wsgi.conf配置文件,加入上面的内容
1 |
|
重启Apache服务
1 |
|
设置开机启动Apache
先用查询apache和mysql服务是否存在,不存在则需要手动添加
1 |
|
设置httpd 在运行级别为2、3、4、5情况都为开启状态
1 |
|
重启Apache服务
1 |
|
生成新镜像
本地需要的程序都准备完成后使用commit生成新的镜像
1 |
|
**docker commit :**从容器创建一个新的镜像。
语法 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:
- **-a :**提交的镜像作者;
- **-c :**使用Dockerfile指令来创建镜像;
- **-m :**提交时的说明文字;
- **-p :**在commit时,将容器暂停。
docker save : 将指定镜像保存成 tar 归档文件。
将镜像 centos/apache-wsgi-django:1.0 生成 centos/apache-wsgi-django.tar 文档
1 |
|
语法:docker save [OPTIONS] IMAGE [IMAGE…]
OPTIONS 说明:
- **-o :**输出到的文件。
将项目文件导入容器并赋予执行权限(可选部分)
为方便批量部署可以把项目文件导入容器,然后再构建镜像。优点:方便批量部署。缺点:项目环境不可重复使用
将主机的项目文件目录拷贝到容器目录
1 |
|
赋予权限:执行某个容器的某条命令,但又不想进入容器内,编写脚本文件
vi start.sh
1 |
|