Montar volumenes acs docker

cancel
Showing results for 
Search instead for 
Did you mean: 
trompe
Active Member

Montar volumenes acs docker

Buenas noches.

Intentando levantar alfresco mediante docker, funciona correctamente siguiendo los pasos de la guia:

https://docs.alfresco.com/6.0/tasks/deploy-docker-compose.html

El tema es, cuando quiero modificar el docker-compose y añadir volumenes para montar donde yo quiero el contenido y los indices (por aquello de que no esté en /Var/lib/docker..... y poder montarlo en carpetas especificas...

 

Bien, he intentado lo siguiente:

En el servicio alfresco  image: alfresco/alfresco-content-repository-community:6.1.2-ga

Definir el directorio de contenido (un disco mas lento y de más espacio), eso funciona OK y se crea bien la carpeta content, etc... (idem con los logs)

volumes:
 - /sharedfolders/dockers/AppData/alfresco/alf_repo_data:/usr/local/tomcat/alf_data
 - /sharedfolders/dockers/AppData/alfresco/logs/alfresco:/usr/local/tomcat/logs

El tema es... si quiero "extender" alfresco y personalizar... me gustaria montar la carpeta "shared/classes" en alguna ubicacion conociida donde poder tocar el alfresco-global.properties y/o lo que haya en la carpeta alfresco... 

Pero si lo monto como volumen:

/sharedfolders/dockers/AppData/alfresco/shared/classes:/usr/local/tomcat/shared/classes

Eso no va a funcionar, porque estoy montando una carpeta "vacia" (shared/classes está vacia inicalmente) en shared/Classes del contenedir.. y por tanto no levantará...

Se me ocurre:
- Levantar sin volumen, copiar shared/Classes del contenedor a la ubicación nueva de shared/classes, parar, meter el volumen y a partir de ahi "trabajar"

¿Pero es correcto así o recomendais otra via para hacerlo?

 

Idem, para el servicio share:
image: alfresco/alfresco-share:6.1.0-RC3

¿como extenderia share sobre la base q está en la imagen?

Muchas gracias.

EDIT:

He intentado ver la guia de @angelborroy  pero el enlace está caido: https://community.alfresco.com/community/ecm/blog/2018/05/01/using-alfresco-201804-ea-in-a-simple-pr...


 

6 Replies

Re: Montar volumenes acs docker

Prueba esta herramienta:

https://github.com/Alfresco/alfresco-docker-installer

Te ayudará a entender cómo se montan los diferentes volúmenes para Docker.

Software Engineer in Alfresco Search Team.
Highlighted
trompe
Active Member

Re: Montar volumenes acs docker

Buenas Angel 

muchas gracias por responder tan rapido.

Revisando la herramienta (sin probarla) solo mirando en github y viendo como crearía el docker-compose resultante...

Creo que voy a seguir con la duda...

├── data                    > DATA STORAGE (it's recommend to perform a backup of this folder)
│   ├── alf-repo-data       > Content Store for Alfresco Repository
│   ├── ldap                > [LDAP] Internal database
│   ├── ocr                 > [OCR] Temporal folder shared between Alfresco Repository and OCR
│   ├── postgres-data       > Internal storage for database
│   ├── slap.d              > [LDAP] Control folder
│   └── solr-data           > Internal storage for SOLR

 Esos están genial... en un caso practico, podrian ser carpetas NFS por ejemplo y sobre ella se crean esos volumenes... 

 

Pero si por ejemplo quiero modificar el WEB-INF/classes/alfresco/share-form-config.xml... en principio, no lo tengo como volumen "persistente" ese fichero... ¿tendria que modificar el Dockerfile de la imagen de share para que cargue mi "nuevo" share-form-config.xm?

 

EDIT:
Como lo realizas en este proyecto, https://github.com/angelborroy/alfresco-docker-201707-GA se acerca más a lo que estaba "entendiendo" de que tendria que ir a parar... y es tener la configuración dentro del dockerfile que genere la imagen... 
Según el entorno, puede ser más practico... tenerlo en un volumen persistente que luego puedas acceder y "modificar" a tu antojo y luego reiniciar el contenedor. Sin tener que hacer una imagen nueva... ¿me explico?

Re: Montar volumenes acs docker

Sería suficiente con montar ese volumen en la ruta de Alfresco, lo puedes hacer desde el propio docker-compose.yml

Software Engineer in Alfresco Search Team.
trompe
Active Member

Re: Montar volumenes acs docker

Algo estaré haciendo mal... 

En mi docker-compose, para el servicio "alfresco-content-repository  tengo el siguietne volumen, para tener todo de la carpeta shared/classes....

volumes:
- /sharedfolders/dockers/Config/alfresco:/usr/local/tomcat/shared/classes

y tras levantarlo alfresco-content-repository no se levanta correctamente (da un error en la inicializacion del contexto) y la carpeta se crea (pero vacia). 

Por mi experiencia con docker, entiendo que intentar montar esa carpeta como volumen en el destino,pero no al revés.

Solo se me ocurre hacer lo siguiente (que me gustaria evitar):

1. Lanzar el docker-compose (sin volumenes) como viene en el dockerhub de alfresco

2. Con todo levantado, entrar en el contenedor y hacer un cp de shared/classes a la carpeta que quiero que haga de volumen

3. Parar todos los contenedores

4. modificar el docker-compose y pasarle como volumen esa carpeta copiada

Deberia levantar correctamente al tener ya los recursos, pero en el volumen que quiero. 

 

La otra opción, sería coger el dockerfile de alfrescon-content-repository y modificarlo. 

Re: Montar volumenes acs docker

Tienes que mapear solo el archivo que quieres sobreescribir, no toda la carpeta.

Por ejemplo:

volumes:
- /sharedfolders/dockers/Config/alfresco/alfresco-global.properties:/usr/local/tomcat/shared/classes/alfresco-global.properties

Si no, estás sobreescribiendo toda la carpeta con el contenido de tu carpeta local (que carece de muchos de los recursos necesarios).

Software Engineer in Alfresco Search Team.
trompe
Active Member

Re: Montar volumenes acs docker

Pues algo estaré haciendo mal...

ERROR: for alfresco Cannot start service alfresco: b'OCI runtime create failed: container_linux.go:345: starting container process caused "process_linux.go:430: container init caused \\"rootfs_linux.go:58: mounting \\\\\\"/sharedfolders/dockers/Config/alfresco/alfresco-global.properties\\\\\\" to rootfs \\\\\\"/var/lib/docker/overlay2/be45a247f89f1fd256ec37ab013fece5b72bf6e541336352e3feb70747262a02/merged\\\\\\" at \\\\\\"/var/lib/docker/overlay2/be45a247f89f1fd256ec37ab013fece5b72bf6e541336352e3feb70747262a02/merged/usr/local/tomcat/shared/classes/alfresco-global.properties\\\\\\" caused \\\\\\"not a directory\\\\\\"\\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type'


Y el volumen está bien puesto en el docker-compose:

services:
    alfresco:
        image: alfresco/alfresco-content-repository-community:6.1.2-ga
        mem_limit: 1500m
        networks:
            - my-net
        environment:
            JAVA_OPTS : "
                -Ddb.driver=org.postgresql.Driver
                -Ddb.username=alfresco
                -Ddb.password=alfresco
                -Ddb.url=jdbc:postgresql://postgres:5432/alfresco
                -Dsolr.host=solr6
                -Dsolr.port=8983
                -Dsolr.secureComms=none
                -Dsolr.base.url=/solr
                -Dindex.subsystem.name=solr6
                -Dshare.host=localhost
                -Dalfresco.port=8082
                -Daos.baseUrlOverwrite=http://localhost:8082/alfresco/aos
                -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\"
                -Ddeployment.method=DOCKER_COMPOSE
                -Dcsrf.filter.enabled=false
                -Xms1024m -Xmx1024m
                "
        ports:
            - 8082:8080 #Browser port
        volumes:
            - /sharedfolders/dockers/Config/alfresco/alfresco-global.properties:/usr/local/tomcat/shared/classes/alfresco-global.properties

Y la ruta es correcta, pero por algun motivo, alfresco-global.properties me lo crea como carpeta en vez de poner el archivo.

 

Sigo pensando, que el único modo de funcionar, es montando ese volumen, pero creando previamente el archivo (copiandolo antes del contenedor a la maquina).

 

 

EDIT: @angelborroy  genial como lo realizais aqui:
https://github.com/keensoft/alfresco-docker-template/tree/master/templates/201806-GA

Esto me cuadra más...muchas gracias.