diff --git a/.dockerignore b/.dockerignore index b03d033..1bd0e9c 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,3 +4,4 @@ .tox env .testrepository +container-data diff --git a/.gitignore b/.gitignore index e484903..98e42f2 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ *.egg-info AUTHORS ChangeLog +build # documentation doc/build @@ -15,3 +16,6 @@ doc/source/_build .tox env .testrepository + +#Container data +container-data diff --git a/Dockerfile b/Dockerfile index 73634bc..abecd6d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,6 @@ RUN apt-get install -y subversion && \ svn checkout https://github.com/savoirfairelinux/monitoring-tools/trunk/packs/linux-keystone /packs/linux-keystone && \ apt-get remove -y subversion - ADD requirements.txt surveil/requirements.txt RUN pip install -r /surveil/requirements.txt @@ -25,15 +24,12 @@ ADD setup.py /surveil/setup.py ADD setup.cfg /surveil/setup.cfg ADD README.rst /surveil/README.rst ADD etc/surveil /etc/surveil +ADD surveil /surveil/surveil #ADD .git /surveil/.git -ENV PBR_VERSION=DEV +ENV PBR_VERSION=PROD -# Surveil API -EXPOSE 8080 +# We are using develop so that the code can be mounted when in DEV. +RUN cd surveil && python setup.py develop -CMD cd /surveil/ && \ - python setup.py develop && \ - ((sleep 40 && surveil-init) &) && \ - sleep 20 && \ - surveil-api --reload +CMD surveil-api diff --git a/container-data/README.rst b/container-data/README.rst new file mode 100644 index 0000000..6e38c8b --- /dev/null +++ b/container-data/README.rst @@ -0,0 +1,5 @@ +Container data +============== + +When running Surveil with docker-compose-production.yml, this folder will be filled with MongoDB and InfluxDB data. + diff --git a/container-data/influxdb/.placeholder b/container-data/influxdb/.placeholder new file mode 100644 index 0000000..e69de29 diff --git a/container-data/mongodb/.placeholder b/container-data/mongodb/.placeholder new file mode 100644 index 0000000..e69de29 diff --git a/docker-compose-common.yml b/docker-compose-common.yml new file mode 100644 index 0000000..8244647 --- /dev/null +++ b/docker-compose-common.yml @@ -0,0 +1,26 @@ +surveil: + build: . + +shinken: + build: tools/docker/shinken_container/ + +mongo: + image: mongo + +influxdb: + image: savoirfairelinux/influxdb + +grafana: + image: savoirfairelinux/grafana + environment: + INFLUXDB_HOST: "influxdb" + INFLUXDB_PORT: "8086" + INFLUXDB_NAME: "db" + INFLUXDB_USER: "root" + INFLUXDB_PASS: "root" + +bansho: + image: savoirfairelinux/bansho + environment: + BANSHO_BACKEND: "surveil" + BANSHO_SURVEIL_URL: "http://surveil:8080/" diff --git a/docker-compose-production.yml b/docker-compose-production.yml new file mode 100644 index 0000000..44be662 --- /dev/null +++ b/docker-compose-production.yml @@ -0,0 +1,63 @@ +surveil: + extends: + file: docker-compose-common.yml + service: surveil + links: + - mongo + - influxdb + - shinken + ports: + - "8080:8080" + environment: + PBR_VERSION: "PROD" + +shinken: + extends: + file: docker-compose-common.yml + service: shinken + links: + - mongo + - influxdb + ports: + - "7767:7767" + +mongo: + extends: + file: docker-compose-common.yml + service: mongo + ports: + - "27017:27017" + command: + "mongod --smallfiles" + volumes: + - ./container-data/mongodb:/data/db + +influxdb: + extends: + file: docker-compose-common.yml + service: influxdb + environment: + PRE_CREATE_DB: "db" + ports: + - "8083:8083" + - "8086:8086" + volumes: + - ./container-data/influxdb:/data + +grafana: + extends: + file: docker-compose-common.yml + service: grafana + ports: + - "80:80" + links: + - influxdb + +bansho: + extends: + file: docker-compose-common.yml + service: bansho + ports: + - "8888:8888" + links: + - surveil diff --git a/docker-compose.yml b/docker-compose.yml index 6cc2dc9..3d2ebdc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,16 +1,23 @@ surveil: - build: . + extends: + file: docker-compose-common.yml + service: surveil links: - mongo - influxdb - shinken ports: - "8080:8080" + environment: + PBR_VERSION: "DEV" volumes: - ./surveil:/surveil/surveil + command: bash -c "cd /surveil/ && python setup.py develop && ((sleep 40 && surveil-init) &) && sleep 20 && surveil-api --reload" shinken: - build: tools/docker/shinken_container/ + extends: + file: docker-compose-common.yml + service: shinken links: - mongo - influxdb @@ -18,29 +25,38 @@ shinken: - "7767:7767" mongo: - image: mongo + extends: + file: docker-compose-common.yml + service: mongo ports: - "27017:27017" command: - "mongod --smallfiles" + "mongod --nojournal --smallfiles" influxdb: - image: savoirfairelinux/influxdb + extends: + file: docker-compose-common.yml + service: influxdb environment: - PRE_CREATE_DB: "db;grafana" + PRE_CREATE_DB: "db" ports: - "8083:8083" - "8086:8086" grafana: - image: savoirfairelinux/grafana + extends: + file: docker-compose-common.yml + service: grafana ports: - "80:80" links: - influxdb - environment: - INFLUXDB_HOST: "influxdb" - INFLUXDB_PORT: "8086" - INFLUXDB_NAME: "db" - INFLUXDB_USER: "root" - INFLUXDB_PASS: "root" + +bansho: + extends: + file: docker-compose-common.yml + service: bansho + ports: + - "8888:8888" + links: + - surveil