完整項(xiàng)目已上傳至gitlab:
鏈接為:我的gitlab項(xiàng)目,我的github項(xiàng)目
image.png
docker-compose.yml文件內(nèi)容:
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
該文件構(gòu)建了五個(gè)容器 分別為:cmdb_server、mysql_server、redis_server、rabbitmq_server、nginx_server容器
- cmdb_server: 作為web主項(xiàng)目,即基于Django的cmdb資產(chǎn)管理項(xiàng)目
- mysql_server: 是為cmdb_server項(xiàng)目提供數(shù)據(jù)存儲(chǔ)等功能
- redis_server: 是為cmdb_server項(xiàng)目提供數(shù)據(jù)緩存等功能
- rabbitmq_server: 是作為cmdb_server項(xiàng)目中進(jìn)行celery異步操作的進(jìn)度調(diào)配者broker
- nginx_server: 是為cmdb_server項(xiàng)目提供反向代理、負(fù)載均衡等功能
文件目錄:
文件目錄.png
創(chuàng)建五個(gè)容器的Dockerfile及相應(yīng)文件:
在docker-cmdb文件夾下創(chuàng)建了五個(gè)文件夾(cmdb、mysql、redis、rabbitmq、nginx)

docker-cmdb目錄結(jié)構(gòu)
一. cmdb容器文件:
cmdb容器文件目錄下有三個(gè)必要文件:

cmdb
1. cmdb: 該文件夾中存放django項(xiàng)目
2. requirments.txt:該文件中存放項(xiàng)目環(huán)境所需安裝的包或模塊
python 項(xiàng)目都有自己的
依賴包,通常會(huì)放在項(xiàng)目根目錄下的一個(gè)文件,這個(gè)文件名叫:requirements.txt
此文件可以通過如下命令得到:
(django) [root@localhost ~]# pip3 freeze > requirement.txt
內(nèi)容一般為:
(django) [root@localhost ~]# head -3 requirments.txt
Django==1.11
PyMySQL==0.8.1
可以使用如下命令來安裝這些項(xiàng)目的依賴模塊。
pip3 install -r requirement.txt
3. Dockerfile: 用來構(gòu)建cmdb項(xiàng)目的docker
內(nèi)容如下:
FROM centos7-python3.7 #以此為基礎(chǔ)鏡像
ONBUILD COPY . /opt/
#安裝項(xiàng)目的依賴模塊
ONBUILD RUN pip3 install -r /opt/requirments.txt && pip3 install uwsgi
二. mysql容器文件
mysql容器文件下有兩個(gè)必須文件:

mysql

文件
1. docker-entrypoint.sh: 構(gòu)建Dockerfile時(shí)所需的腳本文件

docker-entrypoint.sh部分舉例.png
2. Dockerfile:Dockerfile文件內(nèi)容如下

Dockerfile參考.png
三. nginx容器文件:

nginx

image.png
1. allstatic:所有的cmdb項(xiàng)目所需的靜態(tài)文件

靜態(tài)文件
2. conf.d:nginx的配置文件,里面存放一個(gè)任意的xxx.conf的文件(只要是以.conf結(jié)尾即可)
upstream django {
# server unix:///path/to/your/mysite/mysite.sock; # for a file socket
# cmdb中Django 的地址和端口
server cmdb_server:8000; # cmdb容器名及監(jiān)聽端口
}
# configuration of the server
server {
# nginx 主機(jī)的監(jiān)聽端口
listen 80;
# nginx 主機(jī)的域名(nginx容器名)
server_name nginx_server;
charset utf-8;
# max upload size
client_max_body_size 75M; # adjust to taste
# Django 的靜態(tài)文件
location /static {
alias /allstatic; # 指向django的static目錄
}
# 最后將非靜態(tài)資源的請(qǐng)求都轉(zhuǎn)發(fā)個(gè) Django
location / {
uwsgi_pass django; # django 和 upstream django 對(duì)應(yīng)
include uwsgi_params; # the uwsgi_params file you installed
}
}
3.Dockerfile:文件內(nèi)容請(qǐng)參考gitlab中

image.png
四. rabbitmq容器文件:

image.png

rabbitmq
文件結(jié)構(gòu)同mysql結(jié)構(gòu),其中有個(gè)run.sh是為了創(chuàng)建rabbitmq中用戶的,目前由于只是測(cè)試docker-compose使用,并未使用該腳本,若有興趣,可做進(jìn)一步研究。
五. redis容器文件:

redis

redis_gitlab
執(zhí)行docker-compose

執(zhí)行目錄
在有docker-compose的文件目錄下執(zhí)行
docker-compose up

image.png
在經(jīng)過一段時(shí)間的安裝后....直至五個(gè)容器都開啟后 ,可直接訪問
docker-compose中nginx配置的端口通過反向代理訪問cmdb項(xiàng)目
image.png

