Skip navigation
All Places > Alfresco Content Services (ECM) > Blog > Authors angelborroy

This article is about modules for the ACS repository and does not cover Share. Share modules from previous Alfresco versions can be deployed to ACS 6 without modifications.

 

This article describes how to migrate Alfresco SDK 3 based projects alfresco-platform-jar-archetype to Alfresco SDK 3 projects including the new dependencies from ACS 6. However, as a third party developer, it might be a lot easier for you to wait for the next version of the official Alfresco SDK.

 

Step 1: Upgrade Alfresco and Share versions

 

Find following properties in your original pom.xml file...

 

<alfresco.platform.version>5.2.f</alfresco.platform.version>
<alfresco.share.version>5.2.e</alfresco.share.version>

 

... and replace the values with the following numbers...

 

<alfresco.platform.version>6.0.7-ga</alfresco.platform.version>
<alfresco.share.version>6.0.b</alfresco.share.version>

 

Step 2: Change Alfresco distribution dependency name

 

Identify Alfresco distribution dependency in your original pom.xml file...

 

<dependency>
    <groupId>${alfresco.groupId}</groupId>
    <artifactId>alfresco-platform-distribution</artifactId>
    <version>${alfresco.platform.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

 

...and replace the name by using the following entry...

 

<dependency>
    <groupId>${alfresco.groupId}</groupId>
    <artifactId>alfresco-content-services-community-distribution</artifactId>
    <version>${alfresco.platform.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

 

From this point you can compile and package your addon for ACS 6. 

 

Step 3: Refactor your code where required

 

Updates that might affect your custom code are (among others):

 

  • Spring
  • Quartz
  • POI
  • Jackson
  • multiple commons-* libraries

 

Removed libraries:

 

  • Hibernate

 

ACS 6 Migration Guide wiki page collects useful information about updating Java code to work with the ACS6 repository.

 

Conclusion

 

These simple instructions can be applied to upgrade your repository addons to ACS 6, but Alfresco will release a detailed guide for migration procedures in the future. 

Alfresco is delivering a Docker Compose for ACS Community deployment that can only be used for local testing environments:

 

acs-community-deployment/docker-compose at master · Alfresco/acs-community-deployment · GitHub 

 

In order to deploy the product in real environments, some additional configurations must be performed. You can find some of this configurations described at Using Alfresco 201804-EA in a simple PROD environment 

 

However, as it should be advisable to maintain original Alfresco resources untouched, another approach is required. Docker Compose allows to share configuration by using additional YML specification files to override the original one. Below some instructions to configure default Alfresco Docker Compose for ACS 6 Community are provided.

 

Checkout or download official Docker Compose

 

$ git clone git@github.com:Alfresco/acs-community-deployment.git
Cloning into 'acs-community-deployment'...
remote: Counting objects: 145, done.
remote: Compressing objects: 100% (91/91), done.
remote: Total 145 (delta 79), reused 103 (delta 49), pack-reused 0
Receiving objects: 100% (145/145), 27.53 KiB | 240.00 KiB/s, done.
Resolving deltas: 100% (79/79), done.

$ cd acs-community-deployment/docker-compose/

$ ls
docker-compose.yml

 

Create a docker-compose.override.yml file

 

You can add volumes mapping, ports exposition and additional Docker images to original Docker Compose.

 

$ touch docker-compose.override.yml

$ cat docker-compose.override.yml
version: "3"

services:

    httpd:
        build: ./httpd
        ports:
          - 443:443
        links:
          - alfresco
          - share
          - solr6 

    alfresco:
      volumes:
          - ./data/alf-repo-data:/usr/local/tomcat/alf_data
      ports:
          - 21:2121

    postgres:
      volumes:
          - ./data/postgres-data:/var/lib/postgresql/data

    solr6:
      volumes:
          - ./data/solr-data:/opt/alfresco-search-services/data

 

Add your customised images

 

Adding an NGIX or Apache HTTPd server should be recommendable for many environments.

 

$ tree httpd
httpd
├── Dockerfile
└── assets
    ├── CA.pem
    ├── alfresco-vhost.conf
    ├── server.crt
    └── server.key

 

You can use something provided by the Community like this one, or any other you like.

 

Start the composition

 

You can use default commands to run Docker Compose.

Extensions declared in docker-compose.override.yml file will be picked automatically, so your volumes, ports and additional Docker images will be available in the composition.

 

$ docker-compose up -d --build

 

Now Alfresco is running in a real environment by using official (and untouched) Docker Compose resource.

There are great resources inside this Community on how to deploy Alfresco 6 using Docker Compose

Although some real environments will require Kubernetes deployment, many others will be managed with a simple Docker Composition. This post is based in Alfresco 201804-EA release, but these instructions can be applied on many other Alfresco 6 releases.

 

This post includes sample configuration for every point, but you can check detailed and running configuration at 201804-EA Docker template

 

Images

Alfresco 6 provides several Docker Images to build every container for different services:

 

Persistent storage

Docker relies on external storage to persist information. When running an Alfresco server, repository, database and search containers are storing data that needs to be persisted.

A volumes tag must be added in docker-compose.yml file to every container definition to map local storage from your server with logical storage inside the container.

alfresco:
    volumes:
        - alf-repo-data:/usr/local/tomcat/alf_data
postgres:
    volumes:
        - postgres-data:/var/lib/postgresql/data
solr6:
    volumes:
        - solr-data:/opt/alfresco-search-services/data

volumes:
    alf-repo-data:
        external: true
    postgres-data:
        external: true
    solr-data:
        external: true

This code is using named volumes. In case they didn't exists, they can be created by using following shell lines:

$ docker volume create alf-repo-data
$ docker volume create postgres-data
$ docker volume create solr-data

Once this configuration is applied, your data will survive any Docker or Server re-starting.

 

Ports configuration

Docker uses internal ports for containers and it exposes to the server a mapping of these ports. In order to configure Alfresco protocols, ports exposition needs to be declared in Alfresco Repository Dockerfile...

EXPOSE 2121 1143 2525 1445 1137/udp 1138/udp 1139

... and mapping needs to be declared in docker-compose.yml

alfresco:
ports:
- 21:2121      # FTP port
- 25:2525      # SMTP port
- 143:1143     # IMAP port
- 445:1145     # CIFS
- 137:1137/udp # CIFS
- 138:1138/udp # CIFS
- 139:1139     # CIFS

It's also required to open these ports in the firewall of the operative system hosting Docker. 

Once this configuration is applied, your Alfresco server will be accessed by FTP, SMTP, IMAP and CIFS.

 

Web applications ports (AJP 8009 for Alfresco, AJP 8009 for Share and HTTP 8983 for Solr) must be also exposed to configure the Proxy at httpd container.

ProxyPass "/share" "ajp://share:8009/share"
ProxyPassReverse "/share" "ajp://share:8009/share"

ProxyPass "/solr" "http://solr6:8983/solr"
ProxyPassReverse "/solr" "http://solr6:8983/solr"   

ProxyPass "/alfresco" "ajp://alfresco:8009/alfresco"
ProxyPassReverse "/alfresco" "ajp://alfresco:8009/alfresco"

It can be used any other Web Container (as NGINX) to provide such configuration.

Once this configuration is applied, your Alfresco server will be accessed by using the same HTTP Port. In the next point the use of port 443 for HTTPs is detailed.

 

Configuring SSL Certificates

To provide real SSL Certificates, assets folder can be filled with working files:

  • CA.pem - CA Certificate Path
  • server.crt - Certificate File
  • server.key - Certificate Key File

Otherwise, it can be configured an external Docker volume to hold these certificates. 

Listen 443
<VirtualHost *:443>
ServerName alfresco.keensoft.es
SSLEngine on
SSLCertificateFile /usr/local/apache2/conf/server.crt
SSLCertificateKeyFile /usr/local/apache2/conf/server.key
SSLCACertificatePath /etc/pki/tls/certs/
SSLOptions +StdEnvVars +ExportCertData
</VirtualHost>

Once this configuration is applied, your Alfresco server will be accessed by HTTPs.

 

Adding modules

Folders to hold AMP or JAR modules has been provided.

alfresco/target/amps
alfresco/target/jars
share/target/amps_share
share/target/jars

Every addon copied into this folders will be deployed in the container.

If further configuration is required in alfresco-global.properties, Dockerfile can be modified to add pairs of property=value blocks

# Add services configuration to alfresco-global.properties
RUN echo -e '\n\
property=value\n\
\n\
' >> /usr/local/tomcat/shared/classes/alfresco-global.properties

Once this configuration is applied, your Alfresco server will provide features from installed modules.

 

Resources

Filter Blog

By date: By tag: