Skip to content
This repository has been archived by the owner on Nov 20, 2020. It is now read-only.

Commit

Permalink
Merge pull request #35 from francescou/gitrepo
Browse files Browse the repository at this point in the history
Gitrepo
  • Loading branch information
francescou committed Jun 24, 2016
2 parents 34a087f + 323891c commit 2a29714
Show file tree
Hide file tree
Showing 6 changed files with 69 additions and 22 deletions.
13 changes: 6 additions & 7 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
# https://github.com/francescou/docker-compose-ui
# DOCKER-VERSION 1.9.1
FROM python:2.7-slim
# DOCKER-VERSION 1.11.2
FROM python:2.7-alpine
MAINTAINER Francesco Uliana <francesco@uliana.it>

RUN pip install virtualenv

WORKDIR /app
RUN virtualenv /env
ADD requirements.txt /app/requirements.txt
RUN /env/bin/pip install -r requirements.txt
ADD . /app
RUN apk add --update git && rm -rf /var/cache/apk/*

COPY . /app
RUN virtualenv /env && /env/bin/pip install -r /app/requirements.txt

VOLUME ["/opt/docker-compose-projects"]

Expand Down
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,15 @@ If you want to use your own docker-compose projects, put them into a directory *

you can download my example projects into */home/user/docker-compose-ui/demo-projects/* from https://github.com/francescou/docker-compose-ui/tree/master/demo-projects

### Load projects from a git repository (experimental)

docker run \
--name docker-compose-ui \
-p 5000:5000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-e GIT_REPO=https://github.com/francescou/docker-compose-ui.git \
francescou/docker-compose-ui:gitrepo

### Note about scaling services

Note that some of the services provided by the demo projects are not "scalable" with `docker-compose scale SERVICE=NUM` because of published ports conflicts.
Expand Down
11 changes: 9 additions & 2 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import docker
import requests
from flask import Flask, jsonify, request
from scripts.git_repo import git_pull, git_repo, GIT_YML_PATH
from scripts.bridge import ps_, get_project, get_container_from_id, get_yml_path, containers
from scripts.find_files import find_yml_files, get_readme_file
from scripts.requires_auth import requires_auth, authentication_enabled, \
Expand All @@ -28,7 +29,13 @@ def load_projects():
load project definitions (docker-compose.yml files)
"""
global projects
projects = find_yml_files(YML_PATH)

if git_repo:
git_pull()
projects = find_yml_files(GIT_YML_PATH)
else:
projects = find_yml_files(YML_PATH)

logging.debug(projects)

load_projects()
Expand Down Expand Up @@ -400,4 +407,4 @@ def handle_generic_error(err):

# run app
if __name__ == "__main__":
app.run(host='0.0.0.0', debug=True, threaded=True)
app.run(host='0.0.0.0', debug=False, threaded=True)
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
Flask==0.10.1
docker-compose==1.7.1
gitpython==1.0.2
31 changes: 31 additions & 0 deletions scripts/git_repo.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
"""
git functionalities
"""

from git import Repo
import os
import logging

git_repo = os.getenv('GIT_REPO')

logging.basicConfig(level=logging.DEBUG)

GIT_YML_PATH = '/opt/docker-compose-projects-git/'

def git_pull():
"""
perform git pull
"""
if git_repo:
logging.info('git pull ' + git_repo)
Repo(GIT_YML_PATH).remote('origin').pull()
else:
logging.info('will not execute git pull: not a git repository')

if git_repo:
logging.info('git repo: ' + git_repo)
if os.path.isdir(os.path.join(GIT_YML_PATH, '.git')):
git_pull()
else:
logging.info('git clone ' + git_repo)
Repo.clone_from(git_repo, GIT_YML_PATH)
26 changes: 13 additions & 13 deletions static/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@
<meta name="description" content="">
<meta name="viewport" content="width=device-width">

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/css/bootstrap.min.css" />
<link rel="stylesheet" href="https://rawgithub.com/fabien-d/alertify.js/0.3.11/themes/alertify.core.css">
<link rel="stylesheet" href="https://rawgithub.com/fabien-d/alertify.js/0.3.11/themes/alertify.default.css">
<link rel="stylesheet" href="https://rawgithub.com/designmodo/Flat-UI/2.2.2/dist/css/flat-ui.min.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/css/bootstrap.min.css" />
<link rel="stylesheet" href="//rawgithub.com/fabien-d/alertify.js/0.3.11/themes/alertify.core.css">
<link rel="stylesheet" href="//rawgithub.com/fabien-d/alertify.js/0.3.11/themes/alertify.default.css">
<link rel="stylesheet" href="//rawgithub.com/designmodo/Flat-UI/2.2.2/dist/css/flat-ui.min.css">
<link rel="stylesheet" href="styles/main.css">
<link rel="stylesheet" href="styles/colors.css">
</head>
Expand All @@ -24,7 +24,7 @@
<div class="col-md-4">
<h3>Projects</h3>
<div class="btn-group-vertical projects">
<a ng-repeat="(id, path) in projects.projects | filterByName:query" class="btn btn-default btn-block" ng-class="{active: activeProject === id}" ng-click="$parent.activeProject = id" ng-href="#/project/{{id}}">{{id}} <span class="label label-success" ng-show="isActive(id, projects.active)">ON</span></a>
<a ng-repeat="(id, path) in projects.projects | filterByName:query" class="btn btn-default btn-block" ng-class="{active: activeProject === id}" ng-click="$parent.activeProject = id" ng-href="#/project/{{id}}">{{id || path}} <span class="label label-success" ng-show="isActive(id, projects.active)">ON</span></a>
</div>
<div class="vertical-margin" ng-hide="isEmpty(projects.projects)">
<form class="form-inline">
Expand Down Expand Up @@ -56,14 +56,14 @@ <h3>Projects</h3>
</div>


<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.16/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.16/angular-resource.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.16/angular-route.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/alertify.js/0.3.0/alertify.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.0/lodash.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/markdown.js/0.5.0/markdown.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.16/angular.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.16/angular-resource.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.16/angular-route.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/alertify.js/0.3.0/alertify.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.0/lodash.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/markdown.js/0.5.0/markdown.min.js"></script>
<script src="scripts/app.js"></script>
<script src="scripts/filters/filters.js"></script>
<script src="scripts/controllers/main.js"></script>
Expand Down

0 comments on commit 2a29714

Please sign in to comment.