Alfresco Content Services docker社区部署文档
Alfresco Content Services简介
Alfresco Content Services(简称ACS)是一款功能完备的企业内容管理(ECM)解决方案,主要面向那些对企业级内容管理有高要求的组织。具体如下:
- 核心优势:具备企业级的可扩展性、高性能,用于管理企业关键业务内容并确保合规性。这意味着企业在业务规模不断扩大、内容数据量持续增长的情况下,Alfresco Content Services能稳定高效运行,同时时刻满足企业在数据安全、法规遵循等方面的要求。
- 主要用途:可应用于多种场景。包括内容和治理服务,帮助企业管理内容的整个生命周期,从创建、存储到最终删除,确保符合法规和企业内部政策;支持上下文搜索和洞察,用户能基于内容的上下文关系进行精准搜索,挖掘有价值的信息;还能轻松与其他应用集成,打破信息孤岛,提升企业整体业务流程的连贯性和效率。
- 关键能力:围绕内容管理提供丰富的功能。在文档管理方面,实现文档的存储、版本控制、权限设置等基础操作;支持文档扫描和捕获,便于将纸质文档转化为数字化信息纳入管理体系;企业协作功能促进团队成员间的协同工作,共同处理和编辑文档;信息治理保障企业信息资产的安全合规;智能分析和洞察则通过对内容的深入挖掘,为企业决策提供数据支持。
Alfresco Content Services是一款功能强大的企业内容管理系统,以下是其官方简介:
- 功能全面
- 企业级内容管理:为企业提供了全面的文档管理功能,可实现对大量文件和文档的高效存储、共享、版本控制等操作,满足企业对业务关键内容的管理需求,确保内容的安全性和合规性。
- 智能流程管理:紧密集成流程与内容服务功能,能够简化以内容为中心的业务流程,让企业在处理文档等内容时,流程更加顺畅,从而支持更快、更明智的决策制定。
- 企业协作功能:可与Microsoft 365和Google Docs等无缝集成,为团队提供强大的企业协作工具,让团队成员能在不同平台上协同工作,提高工作效率。
- 信息治理:Alfresco Governance Services能够自动管理信息生命周期,减少用户干预,降低企业业务风险,增强合规性,确保企业信息资产的安全和有序管理。
- 智能分析:能够自动提取内容中的有价值信息,对内容和元数据进行自动丰富,为企业提供关键洞察,帮助企业更好地理解和利用其内容资产。
- 技术优势
- 基于开放标准和API:以开放标准和API为基础构建,易于与其他系统集成和定制,能轻松满足不同企业的多样化业务需求,可与企业现有的IT架构进行无缝对接。
- 容器化与微服务架构:采用容器化与微服务架构,借助Docker确保应用的轻量化与可移植性,通过Kubernetes或Docker Compose进行编排,增强了系统的弹性和可扩展性,方便在不同环境中部署和运行。
- 应用场景广泛
- 云部署:能在公有云或私有云中快速搭建内容管理系统,灵活应对云环境下的弹性资源需求,帮助企业充分利用云的优势进行内容管理。
- 开发与测试环境:为开发团队提供了快速搭建一致性环境的能力,有助于加速软件开发生命周期,提高开发和测试效率。
- 多环境部署管理:在不同的测试、预生产、生产环境中,能够高效同步配置,减少人工错误,确保各个环境的稳定性和一致性。
https://docs.alfresco.com/content-services #官网
https://github.com/Alfresco/acs-deployment.git #github
前提条件
操作系统:unbuntu22.04
在开始之前,需要确保已经安装了 Docker 和 Docker Compose。Docker 用于创建和管理容器,Docker Compose 则用于定义和运行多容器的 Docker 应用。
测试验证之前把所有的之前的docker容器关掉或者删除,要不然会有端口冲突!
1. 创建目录结构
首先,创建一个目录来存放相关的配置文件和数据,例如:
mkdir alfresco-docker
cd alfresco-docker
2. 创建 docker-compose.yml 文件
在 alfresco-docker 目录下创建一个 docker-compose.yml 文件,以下是一个基本的示例配置:
# This docker-compose.yml file is used to spin up an Alfresco Content Services (ACS) trial cluster on a local host or on a server and it requires a minimum of 16GB Memory to distribute among containers.
# To use this file to create a local installation of Alfresco Content Services, you need to have Docker Compose installed [https://docs.docker.com/compose/install/].
# Navigate to the folder where this file is located, and issue the following commands:
#
# docker login quay.io -u="alfresco+acs_v6_trial" -p="MDF9RNGUJPKZ83KK8UVGUVWO9AYKUZ0VN6WG5VOOCUT6BX19JJLU5ZL0HKU7N20C"
# docker-compose up
#
# For additional information about using this docker-compose file, please see:
# https://github.com/Alfresco/acs-deployment/blob/master/docs/docker-compose-deployment.md
# You may wish to limit container memory and assign a certain percentage to JVM. There are couple of ways to allocate JVM Memory for ACS Containers
# For example: 'JAVA_OPTS: "$JAVA_OPTS -XX:+PrintFlagsFinal -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap"'
# If container memory is not explicitly set, then the above flags will default max heap to 1/4th of container's memory.
version: "2"
services:
alfresco:
image: quay.io/alfresco/alfresco-content-repository:23.2.1
mem_limit: 1900m
environment:
JAVA_TOOL_OPTIONS: -Dencryption.keystore.type=JCEKS -Dencryption.cipherAlgorithm=DESede/CBC/PKCS5Padding -Dencryption.keyAlgorithm=DESede -Dencryption.keystore.location=/usr/local/tomcat/shared/classes/alfresco/extension/keystore/keystore -Dmetadata-keystore.password=mp6yc0UD9e -Dmetadata-keystore.aliases=metadata -Dmetadata-keystore.metadata.password=oKIWzVdEdA -Dmetadata-keystore.metadata.algorithm=DESede
JAVA_OPTS: "-Ddb.driver=org.postgresql.Driver
-Ddb.username=alfresco
-Ddb.password=alfresco
-Ddb.url=jdbc:postgresql://postgres:5432/alfresco
-Dindex.subsystem.name=elasticsearch
-Delasticsearch.createIndexIfNotExists=true
-Delasticsearch.host=elasticsearch
-Delasticsearch.port=9200
-Dshare.host=127.0.0.1
-Dshare.port=8080
-Dalfresco.host=localhost
-Dalfresco.port=8080
-Dcsrf.filter.enabled=false
-Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos
-Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\"
-Ddeployment.method=DOCKER_COMPOSE
-Dtransform.service.enabled=true
-Dtransform.service.url=http://transform-router:8095
-Dsfs.url=http://shared-file-store:8099/
-DlocalTransform.core-aio.url=http://transform-core-aio:8090/
-Ddsync.service.uris=http://localhost:9090/alfresco
-DtrialUid=id10718692
-XX:MinRAMPercentage=50
-XX:MaxRAMPercentage=80"
healthcheck:
test:
- CMD
- curl
- -f
- http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/probes/-ready-
interval: 30s
timeout: 3s
retries: 3
start_period: 1m
transform-router:
mem_limit: 512m
image: quay.io/alfresco/alfresco-transform-router:4.1.2
environment:
JAVA_OPTS: -XX:MinRAMPercentage=50 -XX:MaxRAMPercentage=80
ACTIVEMQ_URL: nio://activemq:61616
CORE_AIO_URL: http://transform-core-aio:8090
FILE_STORE_URL: http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file
ports:
- "8095:8095"
depends_on:
- activemq
transform-core-aio:
image: alfresco/alfresco-transform-core-aio:5.1.2
mem_limit: 1536m
environment:
JAVA_OPTS: -XX:MinRAMPercentage=50 -XX:MaxRAMPercentage=80
ACTIVEMQ_URL: nio://activemq:61616
FILE_STORE_URL: http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file
ports:
- "8090:8090"
depends_on:
- activemq
shared-file-store:
image: quay.io/alfresco/alfresco-shared-file-store:4.1.2
mem_limit: 512m
environment:
JAVA_OPTS: -XX:MinRAMPercentage=50 -XX:MaxRAMPercentage=80
scheduler.content.age.millis: 86400000
scheduler.cleanup.interval: 86400000
ports:
- "8099:8099"
volumes:
- shared-file-store-volume:/tmp/Alfresco/sfs
share:
image: quay.io/alfresco/alfresco-share:23.2.1
mem_limit: 1g
environment:
REPO_HOST: "alfresco"
REPO_PORT: "8080"
JAVA_OPTS: -XX:MinRAMPercentage=50 -XX:MaxRAMPercentage=80 -Dalfresco.host=localhost -Dalfresco.port=8080 -Dalfresco.context=alfresco -Dalfresco.protocol=http
postgres:
image: postgres:14.4
mem_limit: 512m
environment:
- POSTGRES_PASSWORD=alfresco
- POSTGRES_USER=alfresco
- POSTGRES_DB=alfresco
command: postgres -c max_connections=300 -c log_min_messages=LOG
ports:
- "5432:5432"
elasticsearch:
image: elasticsearch:7.10.1
environment:
- xpack.security.enabled=false
- discovery.type=single-node
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
cap_add:
- IPC_LOCK
ports:
- 9200:9200
- 9300:9300
search:
image: quay.io/alfresco/alfresco-elasticsearch-live-indexing:4.0.1
mem_limit: 1g
depends_on:
elasticsearch:
condition: service_started
search-reindexing:
condition: service_completed_successfully
environment:
ALFRESCO_ACCEPTED_CONTENT_MEDIA_TYPES_CACHE_BASE_URL: http://transform-core-aio:8090/transform/config
ALFRESCO_SHAREDFILESTORE_BASEURL: http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file/
SPRING_ACTIVEMQ_BROKERURL: nio://activemq:61616
SPRING_ELASTICSEARCH_REST_URIS: http://elasticsearch:9200
search-reindexing:
image: quay.io/alfresco/alfresco-elasticsearch-reindexing:4.0.1
mem_limit: 1g
restart: on-failure:10
environment:
ALFRESCO_ACCEPTED_CONTENT_MEDIA_TYPES_CACHE_BASE_URL: http://transform-core-aio:8090/transform/config
SPRING_ACTIVEMQ_BROKERURL: nio://activemq:61616
SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/alfresco
SPRING_DATASOURCE_USERNAME: alfresco
SPRING_DATASOURCE_PASSWORD: alfresco
SPRING_ELASTICSEARCH_REST_URIS: http://elasticsearch:9200
depends_on:
postgres:
condition: service_started
elasticsearch:
condition: service_started
alfresco:
condition: service_healthy
activemq:
image: alfresco/alfresco-activemq:5.18-jre17-rockylinux8
mem_limit: 1g
ports:
- "8161:8161" # Web Console
- "5672:5672" # AMQP
- "61616:61616" # OpenWire
- "61613:61613" # STOMP
digital-workspace:
image: quay.io/alfresco/alfresco-digital-workspace:4.4.1
mem_limit: 128m
environment:
APP_CONFIG_PROVIDER: "ECM"
APP_CONFIG_AUTH_TYPE: "BASIC"
BASE_PATH: ./
APP_CONFIG_PLUGIN_PROCESS_SERVICE: "false"
APP_CONFIG_PLUGIN_MICROSOFT_ONLINE: "false"
APP_BASE_SHARE_URL: "http://localhost:8080/workspace/#/preview/s"
control-center:
image: quay.io/alfresco/alfresco-control-center:8.4.1
mem_limit: 128m
environment:
APP_CONFIG_PROVIDER: "ECM"
APP_CONFIG_AUTH_TYPE: "BASIC"
BASE_PATH: ./
proxy:
image: alfresco/alfresco-acs-nginx:3.4.2
mem_limit: 128m
depends_on:
- alfresco
- digital-workspace
- control-center
- share
ports:
- "8080:8080"
sync-service:
image: quay.io/alfresco/service-sync:4.0.1
mem_limit: 1g
environment:
JAVA_OPTS: -Dsql.db.driver=org.postgresql.Driver -Dsql.db.url=jdbc:postgresql://postgres:5432/alfresco -Dsql.db.username=alfresco -Dsql.db.password=alfresco -Dmessaging.broker.host=activemq -Drepo.hostname=alfresco -Drepo.port=8080 -Ddw.server.applicationConnectors[0].type=http -XX:MinRAMPercentage=50 -XX:MaxRAMPercentage=80
ports:
- "9090:9090"
volumes:
shared-file-store-volume:
driver_opts:
type: tmpfs
device: tmpfs
将localhost替换你服务器的IP
3. 启动容器
在 docker-compose.yml 文件所在的目录下,运行以下命令启动容器:
执行构建命令
docker-compose up -d
解释:
docker-compose up 命令用于启动由 docker-compose.yml 文件定义的所有服务。
-d 参数表示在后台运行容器。
4. 验证部署
启动容器后,可以通过访问 http://localhost:8080/alfresco 来验证 Alfresco Content Services 是否成功部署。首次访问时,需要进行一些初始设置,例如创建管理员账户等。
5. 停止和删除容器
如果需要停止和删除容器,可以使用以下命令:
这个命令是集体删除容器,慎用。
docker-compose down
解释:
docker-compose down 命令会停止并删除由 docker-compose.yml 文件定义的所有服务及其相关的网络和卷(如果使用了 --volumes 参数)。
注意事项
配置调整:根据实际需求,可以调整 docker-compose.yml 文件中的配置,例如更改端口映射、环境变量等。
docker ps -a
笔者是用unbuntu桌面版访问localhost,如果是部署在没有桌面的服务器,在构建之前先把localhost替换成服务器IP!
admin admin