docker-compose構(gòu)建cmdb聯(lián)合容器項(xiàng)目

完整項(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_serverredis_server、rabbitmq_servernginx_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-composenginx配置的端口通過反向代理訪問cmdb項(xiàng)目
image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容