aiven'blog

Zaqar docker镜像制作

docker镜像制作

本文中zaqar采用docker进行部署,在部署之前需要制作docker镜像,基于centos7基础镜像制作。
制作前准备:
安装docker

1
yum install docker

拉取centos7镜像:

1
docker pull docker.io/centos

为了避免制作的docker镜像过大,这里直接采用dockerfile进行制作,Dockerfile内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# zaqar dockerfile
FROM docker.io/centos
MAINTAINER yangzhenyu
RUN echo "==> Init zaqar user and group..." && \
useradd -d /var/lib/zaqar -s /sbin/nologin zaqar && \
groupmod -g 971 zaqar && \
usermod -u 971 zaqar && \
chown -R zaqar.zaqar /var/lib/zaqar && \
mkdir /etc/zaqar && \
mkdir /var/log/zaqar && \
chgrp zaqar /etc/zaqar && \
chown zaqar /var/log/zaqar && \
echo "==> Install dependence package..." && \
yum install -y epel-release gcc python-devel git && \
yum install -y python-pip && \
pip install --upgrade pymongo gevent uwsgi && \
echo "==> Install zaqar package..." && \
mkdir /zaqar && \
cd /zaqar && \
git clone https://github.com/openstack/python-openstackclient.git && \
cd /zaqar/python-openstackclient && \
git checkout stable/pike && \
pip install . && \
cd /zaqar && \
git clone https://github.com/eayunstack/python-zaqarclient.git && \
cd /zaqar/python-zaqarclient && \
git checkout devel && \
pip install . && \
cd /zaqar && \
git clone https://github.com/eayunstack/zaqar.git && \
cd /zaqar/zaqar && \
git checkout devel && \
pip install . && \
echo "==> Clean packages..." && \
yum remove -y epel-release python-pip && \
yum remove -y gcc python-devel git && \
yum clean all && \
rm -rf /var/cache/yum/* && \
mkdir /etc/yum.repos.d/repo && \
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo/ && \
rm -rf /zaqar && \
echo "==> Deploy zaqar success..."
USER zaqar
CMD ["/usr/bin/uwsgi", "--ini", "/etc/zaqar/uwsgi.conf"]

只使用1个RUN不会产生过多的中间过程,因为docker每一个命令都会生成一个中间层,这样也就避免了镜像过大的问题。

build镜像

1
docker build -t eayunstack/zaqar-base .

导出镜像

1
docker save --output eayunstack_zaqar_base.latest.171025 eayunstack/zaqar-base

目前部署采用ansible进行,请注意导出的镜像文件名的格式。

ansible目录下执行:

1
ansible-playbook -vvv site.yml 2>&1 |tee site.log

热评文章