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...
Prueba esta herramienta:
https://github.com/Alfresco/alfresco-docker-installer
Te ayudará a entender cómo se montan los diferentes volúmenes para 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?
Sería suficiente con montar ese volumen en la ruta de Alfresco, lo puedes hacer desde el propio docker-compose.yml
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.
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).
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.
Discussions about Alfresco Content Services and Alfresco Process Services in Spanish
Related:
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.