docker-compose构建cmdb联合容器项目
2019-11-12 本文已影响0人
Oooyzx
完整项目已上传至gitlab:
链接为:我的gitlab项目,我的github项目
image.png
docker-compose.yml文件内容:
version: '3.3'
services:
cmdb:
#image: centos7-python3.7
build: /home/docker_compose/auto-cmdb/docker-cmdb/cmdb
ports:
- "127.0.0.1:9099:80"
- "127.0.0.1:9333:22"
container_name: "cmdb_server"
#volumes:
# - ./docker-cmdb/cmdb/cmdb:/opt/cmdb
networks:
- jumpserver-test
tty: true
depends_on:
- mysql
- redis
- rabbitmq
- nginx
command:
- /bin/bash
- -c
- |
cd /opt/cmdb
python3 manage.py makemigrations
python3 manage.py migrate
uwsgi --ini conf/qf_uwsgi.ini
mysql:
build:
context: ./docker-cmdb/mysql
dockerfile: Dockerfile
#image: mysql/mysql-server:5.7
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- ./data/mysql/data:/var/lib/mysql
- ./data/mysql/init:/docker-entrypoint-initdb.d/
#- type: volume
# source: mysqldb
# target: /var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: Oyzx1314@
expose:
- "3306"
container_name: "mysql_server"
networks:
- jumpserver-test
redis:
#image: redis:alpine
build: /home/docker_compose/auto-cmdb/docker-cmdb/redis
expose:
- "6379"
container_name: "redis_server"
networks:
- jumpserver-test
rabbitmq:
#image: rabbitmq:latest
build: /home/docker_compose/auto-cmdb/docker-cmdb/rabbitmq
expose:
- "5672"
container_name: "rabbitmq_server"
networks:
- jumpserver-test
nginx:
#image: nginx:alpine3.8
build: /home/docker_compose/auto-cmdb/docker-cmdb/nginx
ports:
- "4333:80"
container_name: "nginx_server"
volumes:
- ./docker-cmdb/nginx/conf.d:/etc/nginx/conf.d
- ./docker-cmdb/nginx/allstatic:/allstatic
networks:
- jumpserver-test
networks:
jumpserver-test:
driver: bridge
该文件构建了五个容器 分别为:cmdb_server
、mysql_server
、redis_server
、rabbitmq_server
、nginx_server
容器
- cmdb_server: 作为web主项目,即基于Django的cmdb资产管理项目
- mysql_server: 是为cmdb_server项目提供数据存储等功能
- redis_server: 是为cmdb_server项目提供数据缓存等功能
- rabbitmq_server: 是作为cmdb_server项目中进行celery异步操作的进度调配者broker
- nginx_server: 是为cmdb_server项目提供反向代理、负载均衡等功能
文件目录:
文件目录.png
创建五个容器的Dockerfile及相应文件:
在docker-cmdb文件夹下创建了五个文件夹(cmdb、mysql、redis、rabbitmq、nginx)

一. cmdb容器文件:
cmdb容器文件目录下有三个必要文件:

1. cmdb: 该文件夹中存放django项目
2. requirments.txt:该文件中存放项目环境所需安装的包或模块
python 项目都有自己的
依赖包
,通常会放在项目根目录下的一个文件,这个文件名叫:requirements.txt
此文件可以通过如下命令得到:
(django) [root@localhost ~]# pip3 freeze > requirement.txt
内容一般为:
(django) [root@localhost ~]# head -3 requirments.txt
Django==1.11
PyMySQL==0.8.1
可以使用如下命令来安装这些项目的依赖模块。
pip3 install -r requirement.txt
3. Dockerfile: 用来构建cmdb项目的docker
内容如下:
FROM centos7-python3.7 #以此为基础镜像
ONBUILD COPY . /opt/
#安装项目的依赖模块
ONBUILD RUN pip3 install -r /opt/requirments.txt && pip3 install uwsgi
二. mysql容器文件
mysql容器文件下有两个必须文件:


1. docker-entrypoint.sh: 构建Dockerfile时所需的脚本文件

2. Dockerfile:Dockerfile文件内容如下

三. nginx容器文件:


1. allstatic:所有的cmdb项目所需的静态文件

2. conf.d:nginx的配置文件,里面存放一个任意的xxx.conf的文件(只要是以.conf结尾即可)
upstream django {
# server unix:///path/to/your/mysite/mysite.sock; # for a file socket
# cmdb中Django 的地址和端口
server cmdb_server:8000; # cmdb容器名及监听端口
}
# configuration of the server
server {
# nginx 主机的监听端口
listen 80;
# nginx 主机的域名(nginx容器名)
server_name nginx_server;
charset utf-8;
# max upload size
client_max_body_size 75M; # adjust to taste
# Django 的静态文件
location /static {
alias /allstatic; # 指向django的static目录
}
# 最后将非静态资源的请求都转发个 Django
location / {
uwsgi_pass django; # django 和 upstream django 对应
include uwsgi_params; # the uwsgi_params file you installed
}
}
3.Dockerfile:文件内容请参考gitlab中

四. rabbitmq容器文件:


文件结构同mysql结构,其中有个run.sh是为了创建rabbitmq中用户的,目前由于只是测试docker-compose使用,并未使用该脚本,若有兴趣,可做进一步研究。
五. redis容器文件:


执行docker-compose

在有docker-compose的文件目录下执行
docker-compose up

在经过一段时间的安装后....直至五个容器都开启后 ,可直接访问
docker-compose
中nginx配置的端口
通过反向代理访问cmdb项目