1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-02-17 11:54:22 +01:00
This commit is contained in:
Sylvain 2015-10-07 16:31:01 +02:00
commit 15dac71137
6 changed files with 267 additions and 2 deletions

View File

@ -26,7 +26,7 @@
<a href="#" class="dropdown-toggle" dropdown-toggle>
<span class="avatar text-center">
<fab-user-avatar ng-model="currentUser.profile.user_avatar" avatar-class="thumb-50"></fab-user-avatar>
<span class="user-name m-l-sm text-black-light font-sbold">{{currentUser.name}} <b class="caret"></b></span>
<span class="user-name m-l-sm text-black-light font-sbold hidden-sm">{{currentUser.name}} <b class="caret"></b></span>
</span>
</a>
<ul class="dropdown-menu animated fadeInRight">
@ -41,4 +41,4 @@
<li ng-if="!isAuthenticated()">
<a href="#" class="font-sbold label text-md" ng-click="login($event)"><i class="fa fa-sign-in"></i> Se connecter</a>
</li>
</ul>
</ul>

85
contrib/docker/Dockerfile Normal file
View File

@ -0,0 +1,85 @@
FROM ubuntu:latest
MAINTAINER David GUENAULT
ENV GITBRANCH dev
# base os upgrade
RUN apt-get -y update && \
apt-get -y upgrade
# prerequisites
RUN apt-get -y install git-core libpq-dev redis-server imagemagick npm vim-nox postgresql sudo curl
RUN apt-get -y install build-essential openssl libreadline6 libreadline6-dev zlib1g zlib1g-dev \
libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf \
libc6-dev ncurses-dev automake libtool bison subversion
# create a setup entry in sudo to gain root privilege without password
RUN cp /etc/sudoers /etc/sudoers.orig && \
groupadd setup && \
echo "%setup ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/setup
# create user and add it to group setup (gain privilege for everything in setup mode)
RUN mkdir -p /home/fabmanager && \
useradd fabmanager && \
chown fabmanager:fabmanager /home/fabmanager && \
usermod -a -G setup fabmanager
# install rvm
RUN su - fabmanager -c "cd /home/fabmanager && \
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 && \
curl -sSL https://get.rvm.io | bash -s stable --rails"
# install dev env
RUN chsh -s /bin/bash fabmanager && \
su - fabmanager -c "cd /home/fabmanager && \
git clone https://github.com/LaCasemate/fab-manager.git && \
git checkout $GITBRANCH
cd /home/fabmanager/fab-manager && \
mkdir -p /home/fabmanager/fab-manager/tmp/pids && \
rvm current && \
bundle install"
# remove privileges
RUN usermod -G fabmanager fabmanager
# make default template unicode compatible
RUN /etc/init.d/postgresql start && \
su - postgres -c "psql -c \"UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';\"" && \
su - postgres -c "psql -c \"DROP DATABASE template1;\"" && \
su - postgres -c "psql -c \"CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING = 'UNICODE';\"" && \
su - postgres -c "psql -c \"UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';\"" && \
su - postgres -c "psql -d template1 -c \"VACUUM FREEZE\"" && \
/etc/init.d/postgresql stop
# prepare database
RUN /etc/init.d/postgresql start && \
/etc/init.d/redis-server start && \
su - postgres -c "psql -c \"CREATE USER fabmanager WITH ENCRYPTED PASSWORD 'fabmanager';\"" && \
su - postgres -c "psql -c \"ALTER ROLE fabmanager WITH CREATEDB;\"" && \
su - postgres -c "psql -c \"CREATE DATABASE fabmanager_development OWNER fabmanager;\"" && \
su - postgres -c "psql -c \"CREATE DATABASE fabmanager_production OWNER fabmanager;\"" && \
cd /home/fabmanager/fab-manager/config && \
cp database.yml.default database.yml && \
sed -i "s/sleede/fabmanager/g" /home/fabmanager/fab-manager/config/database.yml && \
/etc/init.d/postgresql stop
# setup database
RUN /etc/init.d/postgresql start && \
/etc/init.d/redis-server start && \
su -l fabmanager -s /bin/bash -c "cd /home/fabmanager/fab-manager && \
rake db:setup" && \
/etc/init.d/postgresql stop && \
/etc/init.d/redis-server stop
# install supervisor
RUN apt-get -y install supervisor && \
sed -i "s/\(\$PORT\)/3000 -b 0.0.0.0/g" /home/fabmanager/fab-manager/Procfile
# make redis run foreground
RUN sed -i "s/daemonize yes/daemonize no/g" /etc/redis/redis.conf
ADD fabmanager.conf /etc/supervisor/conf.d/fabmanager.conf
CMD ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisor/supervisord.conf"]

33
contrib/docker/Makefile Normal file
View File

@ -0,0 +1,33 @@
DOCKER=/usr/bin/docker
COMPOSE=/usr/local/bin/docker-compose
COMPOSEFILE=fabmanager.yml
REPOSITORY=fabmanager
IMAGE=fabmanager
TAG=latest
IMAGENAME=$(REPOSITORY)/$(IMAGE):$(TAG)
CONTAINERNAME=fabmanager
build:
@$(DOCKER) build -t $(IMAGENAME) .
interactive:
@$(DOCKER) run -ti --rm $(IMAGENAME) /bin/bash
up:
@$(COMPOSE) -f $(COMPOSEFILE) up -d
ps:
@$(COMPOSE) -f $(COMPOSEFILE) ps
stop:
@$(COMPOSE) -f $(COMPOSEFILE) stop
start:
@$(COMPOSE) -f $(COMPOSEFILE) start
kill:
@$(COMPOSE) -f $(COMPOSEFILE) kill
rm:
@$(COMPOSE) -f $(COMPOSEFILE) rm -v --force

118
contrib/docker/README.md Normal file
View File

@ -0,0 +1,118 @@
## Prérequis
Les "outils" suivants sont un prérequis à l'utilisation de fab-manager en tant que conteneur.
- docker (prérequis)
- docker-compose (option)
- docker-enter (option)
- make (option)
## Installation de docker
Voir la documentation docker : https://docs.docker.com/installation/
## Installation de docker-compose
docker-compose permet de gérer l'orchestration de conteneurs docker. En soit et dans le cas de fabmanager il n'est pas "encore" utile mais apporte une souplesse par rapport à la ligne de commande. Il sera par contre utilisé quand on aura sorti redis et postgres du conteneur (travail en cours).
L'installation de docker-compose peut se faire via pip. Cela est optionnel mais pratique pour gérer l'utilisation du conteneur au quotidien.
```
pip install --upgrade docker-compose
```
## Installation de docker-enter
docker-enter est un wrapper sur nsenter. Cet outil permet d'ouvrir un shell sur un conteneur en cours de fonctionnement. On évite ainsi d'avoir à installer un serveur ssh sur le conteneur. Il peut être remplacé par la commande exec (docker exec) depuis la version 1.3 de docker. Malgré tout je trouve docker-enter plus "stable" que docker exec.
Le dépôt github de docker-exec est : https://github.com/jpetazzo/nsenter
```
git clone https://github.com/jpetazzo/nsenter
cd nsenter
docker exec -it CONTAINER_NAME /bin/bash
```
## Installation de make
L'installation de make est optionnelle mais est pratique pour l'utilisation du conteneur au quotidiebn
# Construction de l'image docker
## La procédure classique
```
cd fab-manager/contrib/docker
docker build -t fabmanager:latest .
```
## La procédure make
```
cd fab-manager/contrib/docker
make build
```
Cela produira une image nommée fabmanager/fabmanager:latest. Vous pouvez surcharger le nomage (repository/name:tag) de la manière suivante:
```
make build REPOSITORY=toto IMAGE=fabmanager TAG=1.1
```
Cela va produire une image nommée toto/fabmanager:1.1
# Utilisation de l'image
## Classique
```
docker run -d --name fabmanager fabmanager/fabmanager:latest
```
## Makefile
### Premier lancement
```
make up
```
### Arrêt du conteneur
```
make stop
```
### Lancer le conteneur (après premier lancement)
```
make start
```
### Etat du conteneur
```
make ps
```
### Tuer le conteneur
```
make kill
```
### Effacer le conteneur
```
make rm
```
### Sequence de commande
On peut lancer une séquence de commande en une seule ligne. Par exemple tuer le conteneur, supprimer le conteneur, construire l'image, lancer le conteneur.
```
make kill rm build up
```
### Notes
- Lors du lancement avec make le port 3000 est mappé sur le port 3000 de l'hôte local. Cela permet de joindre fabmanager dans un navigateur à l'url "http://ipdelhotedocker:3000"

View File

@ -0,0 +1,23 @@
[program:redis]
command=/usr/bin/redis-server /etc/redis/redis.conf
autostart=true
autorestart=true
user=root
stdout_logfile=/var/log/supervisor/redis.log
stderr_logfile=/var/log/supervisor/rediserror.log
[program:postgresql]
command=/usr/lib/postgresql/9.3/bin/postgres -D /var/lib/postgresql/9.3/main -c config_file=/etc/postgresql/9.3/main/postgresql.conf
autostart=true
autorestart=true
user=postgres
stdout_logfile=/var/log/supervisor/postgres.log
stderr_logfile=/var/log/supervisor/postgreserror.log
[program:fabmanager]
command=su -l fabmanager -c "cd /home/fabmanager/fab-manager && foreman start"
directory=/home/fabmanager/fab-manager
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/fabmanager.log
stderr_logfile=/var/log/supervisor/fabmanagererror.log

View File

@ -0,0 +1,6 @@
fabmanager:
hostname: fabmanager
container_name: fabmanager
image: squaregolab/fabmanager:latest
ports:
- "3000:3000"