[Compose, DockerAPI, Web, Watchdog] Watchdog may send notification mails (todo: docs), DockerAPI via Flesk for limited access

This commit is contained in:
andryyy
2017-10-05 23:38:33 +02:00
parent 9860d44d04
commit fc18d153cd
9 changed files with 152 additions and 22 deletions

View File

@@ -0,0 +1,8 @@
FROM python:2-alpine
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
RUN apk add -U --no-cache iptables ip6tables
RUN pip install docker flask flask-restful
COPY server.py /
CMD ["python2", "-u", "/server.py"]

View File

@@ -0,0 +1,41 @@
from flask import Flask
from flask_restful import Resource, Api
from docker import APIClient
dockercli = APIClient(base_url='unix://var/run/docker.sock')
app = Flask(__name__)
api = Api(app)
class Containers(Resource):
def get(self):
return dockercli.containers(all=True)
class ContainerInfo(Resource):
def get(self, container_id):
return dockercli.containers(all=True, filters={"id": container_id})
class ContainerStart(Resource):
def post(self, container_id):
try:
dockercli.start(container_id);
except:
return 'Error'
else:
return 'OK'
class ContainerStop(Resource):
def post(self, container_id):
try:
dockercli.stop(container_id);
except:
return 'Error'
else:
return 'OK'
api.add_resource(Containers, '/info/container/all')
api.add_resource(ContainerInfo, '/info/container/<string:container_id>')
api.add_resource(ContainerStop, '/stop/container/<string:container_id>')
api.add_resource(ContainerStart, '/start/container/<string:container_id>')
if __name__ == '__main__':
app.run(debug=False, host='0.0.0.0', port='8080')