Image de la bannière : Alfresco Docker Cloud

Alfresco Docker Cloud

project image


Le but de ce projet est de fournir un système Alfresco de production fonctionnant sous Docker.

Nous avons créé 4 images docker pour construire une installation complète d’Alfresco sur Docker. Nous ciblons des images petites et flexibles pour tester sur un laptop avec Docker-Compose ou en production avec docker-swarm.

Les images sont automatiquement construites sur Docker Cloud et basées sur les images official Tomcat pour être le plus standard possible.

PlateformeDockerImageGitHub
Alfresco Content Repository 5.2jeci/alfresco-platformHub Docker Jeci alfresco-platformGitHub
Alfresco Share 5.2jeci/alfresco-shareHub Docker Jeci alfresco-shareGitHub
Alfresco Solr 4jeci/alfresco-solrHub Docker Jeci alfresco-solrGitHub
LibreOffice 5.2jeci/alfresco-libreofficeHub Docker Jeci alfresco-libreofficeGitHub
Mise à jour : Alfresco x Collabora Online

docker images

Voir chapitre ci-dessous pour voir avec quelle facilité nous installons Alfresco RM sur ces images.

Quick Start (Ubuntu)

1. Installer Docker

sudo apt-get install docker.io
sudo usermod -a -G docker `whoami`
sudo curl -L -o /usr/local/bin/docker-compose \
https://github.com/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m`
sudo chmod +x /usr/local/bin/docker-compose

Lisez la documentation pour voir comment installer Docker et Docker-Compose

2. Démarrer Alfresco

ouvrir un nouveau terminal pour charger une nouvelle permission de groupe (ou vous devrez utiliser sudo pour exécuter la commande suivante)

wget https://raw.githubusercontent.com/jeremie-lesage/alfresco-docker-cloud/master/docker-compose.yml

docker-compose up -d

3. Utiliser

Votre serveur est maintenant disponible : http://localhost:8080/share/ avec le login admin / admin

Quand vous avez terminé, éteignez avec la commande docker-compose down .

Sources

Les sources sont disponibles sur Github:

Déclarez les problèmes dans le projet Github

Prérequis

Avec la configuration par défaut vous avez besoin d’au moins 2GO de RAM et 2 CPU

Fonctionnement des conteneurs

En ligne de commande

Si vous ne souhaitez pas installer docker-compose, vous pouvez faire fonctionner les conteneurs en ligne de commande.

1. Récupérer toutes les images

docker pull jeci/alfresco-platform:5.2.g
docker pull jeci/alfresco-share:5.2.f
docker pull jeci/alfresco-solr:5.2.g
docker pull jeci/alfresco-libreoffice:5.3.6
docker pull postgres:9.4

2. Créez les repertoires pour le stockage local

[source,sh]

mkdir -p volumes/alf_data volumes/solr_data volumes/pg_data 
mkdir -p logs/alfresco logs/share logs/solr

3. Démarrez tous les conteneurs

docker run -d --name "postgresql" \
-e POSTGRES_DB=alfresco \
-e POSTGRES_PASSWORD=alfresco \
-e POSTGRES_USER=alfresco \
-v "$PWD/volumes/pg_data:/var/lib/postgresql/data" \
postgres:9.4

docker run -d --restart always --name "libreoffice" jeci/alfresco-libreoffice:5.2.7

docker run -d --name "alfresco" \
-e CATALINA_OPTS="-Xmx1G -XX:+UseConcMarkSweepGC" \
-v "$PWD/volumes/alf_data:/opt/alf_data" \
-v "$PWD/logs/alfresco:/usr/local/tomcat/logs/" \
--link postgresql:postgresql \
--link libreoffice:libreoffice \
jeci/alfresco-platform:5.2.g


docker run -d -p "8080:8080" --name "share" \
-e CATALINA_OPTS="-Xmx1G -XX:+UseConcMarkSweepGC" \
-v "$PWD/logs/share:/usr/local/tomcat/logs/" \
--link alfresco:alfresco \
jeci/alfresco-share:5.2.f


docker run -d --name "solr" \
-e CATALINA_OPTS="-Xmx1G -XX:+UseG1GC" \
-v "$PWD/volumes/solr_data:/opt/solr_data" \
-v "$PWD/logs/solr:/usr/local/tomcat/logs/" \
--link alfresco:alfresco \
jeci/alfresco-solr:5.2.g

4. Jouez

Votre serveur est maintenant disponible : http://localhost:8080/share/ with login +admin+ / +admin+

Les logs sont disponibles en cli:

docker logs alfresco

ou dans les répertoires locaux

ls logs/*

5. Nettoyage

docker stop share solr alfresco postgresql libreoffice
docker rm share solr alfresco postgresql libreoffice

rm -r ./logs
rm -r ./volumes

Avec Docker-Compose

Derrière le Quick Start ci-dessus, il y a un fichier docker-compose.yml qui définit les services. Vous pouvez facilement personnaliser cette configuration.

Vous y trouverez 4 services : alfresco, share, solr et postgresql. Vous devez respecter le nom du service car ils sont utilisés dans les fichiers de configuration. Attention à la version (tag) utilisée car Alfresco et Share ont des versions différentes.

Nous avons modifié ci-dessous la définition des ports pour accéder à Alfresco Platform sur le port 8080 et Alfresco Share sur le port 8081.

version: '2'

services:
alfresco:
image: jeci/alfresco-platform:5.2.g
environment:
CATALINA_OPTS: "-Xmx1G -XX:+UseConcMarkSweepGC"
depends_on: 
- postgresql
networks:
- internal
ports:
- "8080:8080"
volumes:
- "alf_logs:/usr/local/tomcat/logs/"
- "alf_data:/opt/alf_data"
tmpfs:
- /tmp
- /usr/local/tomcat/temp/
- /usr/local/tomcat/work/

share:
image: jeci/alfresco-share:5.2.f
environment:
CATALINA_OPTS: "-Xmx1G -XX:+UseConcMarkSweepGC"
depends_on:
- alfresco
networks:
- internal
ports:
- "8081:8080"
volumes:
- "share_logs:/usr/local/tomcat/logs/"
tmpfs:
- /tmp
- /usr/local/tomcat/temp/
- /usr/local/tomcat/work/

solr:
image: jeci/alfresco-solr:5.2.g
environment:
CATALINA_OPTS: "-Xmx1G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:G1HeapRegionSize=8m -XX:MaxGCPauseMillis=200"
depends_on:
- alfresco
networks:
- internal
volumes:
- "solr_logs:/usr/local/tomcat/logs/"
- "solr_data:/opt/solr_data"
tmpfs:
- /tmp
- /usr/local/tomcat/temp/
- /usr/local/tomcat/work/

libreoffice:
image: jeci/alfresco-libreoffice:5.2.7
restart: always
networks:
- internal

postgresql:
image: postgres:9.4
environment:
- POSTGRES_DB=alfresco
- POSTGRES_PASSWORD=alfresco
- POSTGRES_USER=alfresco
networks:
- internal
volumes:
- "pgsql_data:/var/lib/postgresql/data"

volumes:
alf_logs:
alf_data:
share_logs:
solr_logs:
solr_data:
pgsql_data:

networks:
internal:

docker-compose.yml

Puis relancez docker-compose pour recharcher la nouvelle configuration:

docker-compose up -d

Vous pouvez maintenant essayer Alfresco Share http://localhost:8081/share/ ou Alfresco Plateform http://localhost:8080/alfresco/.

Vous pouvez vérifier les logs par service :

docker-compose logs alfresco
docker-compose logs share
docker-compose logs solr

Aller plus loin

Vous pouvez facilement ajouter des modules ou des configurations personnalisés avec ces images.

Ajouter un module AMP personnalisé

Vous devez fabriquer votre propre image Docker. You have to make your own Docker image. Vous trouverez ci-dessous un exemple simple d’ajout d’Alfresco RM 2.5 à nos images de base.

Télécharger d’abord les modules Alfresco RM dans un repertoire local.

wget https://artifacts.alfresco.com/nexus/content/groups/public/org/alfresco/alfresco-rm-community-repo/2.5.b/alfresco-rm-community-repo-2.5.b.amp
wget https://artifacts.alfresco.com/nexus/content/groups/public/org/alfresco/alfresco-rm-community-share/2.5.b/alfresco-rm-community-share-2.5.b.amp

Puis créez 2 Dockerfile, pour Alfresco Plateform Dockerfile-Alfresco et pour Alfresco Share Dockerfile-Share

FROM jeci/alfresco-platform:5.2.g

COPY alfresco-rm-community-repo-2.5.b.amp /root/amp

RUN java -jar /root/alfresco-mmt.jar install /root/amp/ /usr/local/tomcat/webapps/alfresco -nobackup -directory

Dockerfile-Alfresco

FROM jeci/alfresco-share:5.2.f

COPY alfresco-rm-community-share-2.5.b.amp /root/amp

RUN java -jar /root/alfresco-mmt.jar install /root/amp/ /usr/local/tomcat/webapps/share -nobackup -directory

Dockerfile-Share

Puis construisez les deux images:

docker build -f Dockerfile-Alfresco -t alfresco-platform-rm:2.5.b .
docker build -f Dockerfile-Share -t alfresco-share-rm:2.5.b .

Ne pas oublier le dernier point ‘.’

Mettez à jour votre fichier docker-compose.yml pour charger vos images.

services:
alfresco:
image: alfresco-platform-rm:2.5.b
[...]

share:
image: alfresco-share-rm:2.5.b
[...]

docker-compose.yml

Enfin, rechargez vos services :

docker-compose up -d

Cette commande va redémarrer tous vos services sauf postgresql, car il ne dépend pas d’Alfresco. Vos volumes restent inchangés, vos données sont donc toujours là (bases de données, contentstore et index solr).