CMDB

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_servermysql_serverredis_serverrabbitmq_servernginx_server容器

文件目录:


文件目录.png

创建五个容器的Dockerfile及相应文件:

在docker-cmdb文件夹下创建了五个文件夹(cmdb、mysql、redis、rabbitmq、nginx)

docker-cmdb目录结构
一. cmdb容器文件:

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容器文件下有两个必须文件:


mysql 文件
1. docker-entrypoint.sh: 构建Dockerfile时所需的脚本文件
docker-entrypoint.sh部分举例.png

2. Dockerfile:Dockerfile文件内容如下

Dockerfile参考.png
三. nginx容器文件:
nginx
image.png

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中

image.png
四. rabbitmq容器文件:
image.png rabbitmq

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

五. redis容器文件:
redis
redis_gitlab

执行docker-compose

执行目录

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

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

猜你喜欢

热点阅读