完整項目已上傳至gitlab:
鏈接為:我的gitlab項目,我的github項目
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)建了五個容器 分別為:cmdb_server
敦间、mysql_server
臊恋、redis_server
歧胁、rabbitmq_server
伴找、nginx_server
容器
- cmdb_server: 作為web主項目嗅绰,即基于Django的cmdb資產(chǎn)管理項目
- mysql_server: 是為cmdb_server項目提供數(shù)據(jù)存儲等功能
- redis_server: 是為cmdb_server項目提供數(shù)據(jù)緩存等功能
- rabbitmq_server: 是作為cmdb_server項目中進(jìn)行celery異步操作的進(jìn)度調(diào)配者broker
- nginx_server: 是為cmdb_server項目提供反向代理抡秆、負(fù)載均衡等功能
文件目錄:
創(chuàng)建五個容器的Dockerfile及相應(yīng)文件:
在docker-cmdb文件夾下創(chuàng)建了五個文件夾(cmdb镐侯、mysql侦讨、redis、rabbitmq苟翻、nginx)
一. cmdb容器文件:
cmdb容器文件目錄下有三個必要文件:
1. cmdb: 該文件夾中存放django項目
2. requirments.txt:該文件中存放項目環(huán)境所需安裝的包或模塊
python 項目都有自己的
依賴包
韵卤,通常會放在項目根目錄下的一個文件,這個文件名叫: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
可以使用如下命令來安裝這些項目的依賴模塊崇猫。
pip3 install -r requirement.txt
3. Dockerfile: 用來構(gòu)建cmdb項目的docker
內(nèi)容如下:
FROM centos7-python3.7 #以此為基礎(chǔ)鏡像
ONBUILD COPY . /opt/
#安裝項目的依賴模塊
ONBUILD RUN pip3 install -r /opt/requirments.txt && pip3 install uwsgi
二. mysql容器文件
mysql容器文件下有兩個必須文件:
1. docker-entrypoint.sh: 構(gòu)建Dockerfile時所需的腳本文件
2. Dockerfile:Dockerfile文件內(nèi)容如下
三. nginx容器文件:
1. allstatic:所有的cmdb項目所需的靜態(tài)文件
2. conf.d:nginx的配置文件,里面存放一個任意的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 主機的監(jiān)聽端口
listen 80;
# nginx 主機的域名(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)資源的請求都轉(zhuǎn)發(fā)個 Django
location / {
uwsgi_pass django; # django 和 upstream django 對應(yīng)
include uwsgi_params; # the uwsgi_params file you installed
}
}
3.Dockerfile:文件內(nèi)容請參考gitlab中
四. rabbitmq容器文件:
文件結(jié)構(gòu)同mysql結(jié)構(gòu)沈条,其中有個run.sh是為了創(chuàng)建rabbitmq中用戶的,目前由于只是測試docker-compose使用邓尤,并未使用該腳本拍鲤,若有興趣,可做進(jìn)一步研究汞扎。
五. redis容器文件:
執(zhí)行docker-compose
在有docker-compose的文件目錄下執(zhí)行
docker-compose up
在經(jīng)過一段時間的安裝后....直至五個容器都開啟后 季稳,可直接訪問
docker-compose
中nginx配置的端口
通過反向代理訪問cmdb項目