/docker-alfresco

Dokerized micro-services to Alfresco latest GA based on openjdk & tomcat official images

Primary LanguageShellMIT LicenseMIT

Build Status

high level architecture

Supported tags and respective Dockerfile links

201707, slim, latest 201704 201702 201701 201612 201605

Description

Alfresco is a leading Enterprise Content Management system which provides document management, collaboration, web content services and records and knowledge management.

This image aims to help you run the latest version of the Alfresco Community Edition in a Docker container.

Roadmap

  • Added Kubernetes example (Hostpath & CephFS)
  • Implement support of Reverse-proxy via environment variable with CSRF support
  • Database connection autoconf when using --link (supported aliases mysql, postgres)
  • Markdown Manual support using manual manageradd-on
  • Markdown Document support using md-preview add-on
  • Fix OpenOffice startup script

Quick Start

Run the alfresco image:

docker run --name='alfresco' -it --rm -p 8080:8080 fjudith/alfresco

NOTE: Please allow a few minutes for the application to start, especially if populating the database for the first time. If you want to make sure that everything went fine, watch the log:

docker exec -it alfresco /bin/bash
tail -f /alfresco/tomcat/logs/catalina.out

Go to http://localhost:8080/share or point to the IP of your docker host. On Mac or Windows, replace localhost with the IP address of your Docker host which you can get using

docker-machine ip default

The default username and password are:

  • username: admin
  • password: admin

Configuration

Datastore

If you use this image in production, you'll probably want to store files and database separately in an external location. Use the CONTENT_STORE environment variable to set the content store to a bind-mounted volume or a network share.

Database

If DB_KIND is postgresql and the DB_HOST environment variable is not set (or localhost), then the internal PostgreSQL server will be started and used.

By setting DB_KIND to mysql, you can use an external MySQL server, e.g. one running in a Docker container:

docker run --name 'mysql' -d -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=secret \
    -e MYSQL_DATABASE=alfresco \
    -e MYSQL_USER=alfresco \
    -e MYSQL_PASSWORD=secret \
    mysql \
    --character-set-server=utf8 \
    --collation-server=utf8_general_ci \
    --max_connections=1024

Configure the Alfresco container to use this MySQL server as database and a bind-mounted volume as content store:

docker run --name='alfresco' -d -p 8080:8080 \
    -v /mnt/alfresco_content_store:/mnt/content_store \
    -e CONTENT_STORE=/mnt/content_store \
    -e DB_KIND=mysql \
    -e DB_HOST=mysql \
    -e DB_PASSWORD=secret \
    --link mysql:mysql \
    fjudith/alfresco

Options

Below is the complete list of currently available parameters that can be set using environment variables.

Mandatory

To get email links working or when reverse-proxy address configured

  • ALFRESCO_HOSTNAME: hostname/fqdn of the Alfresco server; default = localhost
  • ALFRESCO_PROTOCOL: protocol of the Alfresco server; default = http
  • ALFRESCO_PORT: listen port of the Alfresco server; default = 8080
  • SHARE_HOSTNAME: hostname/fqdn of the Share server; default = localhost
  • SHARE_PROTOCOL: protocol of the Share server; default = http
  • SHARE_PORT: listen port of the Share server; default = 8080
Reverse-Proxy

If SSL offloading is enable on the reverse proxy, "Mandatory" variable set needs to changed accordingly.

  • REVERSE_PROXY_URL: url of the reverse-proxy; default = empty
Database
  • DB_KIND: postgresql or mysql; default = postgresql
  • DB_USERNAME: username to use when connecting to the database; default = alfresco
  • DB_PASSWORD: password to use when connecting to the database; default = admin
  • DB_NAME: name of the database to connect to; default = alfresco
  • DB_HOST: host of the database server; default = localhost
  • DB_CONN_PARAMS: database connection parameters; for MySQL, default = ?useSSL=false, otherwise empty
CIFS
  • CIFS_ENABLED: whether or not to enable CIFS; default = true
  • CIFS_SERVER_NAME: hostname of the CIFS server; default = localhost
  • CIFS_DOMAIN: domain of the CIFS server; default = WORKGROUP
  • NFS_ENABLED: whether or not to enable NFS; default = false
LDAP
  • LDAP_ENABLED: whether or not to enable LDAP; default = false
  • LDAP_KIND: ldap (e.g. for OpenLDAP) or ldap-ad (Active Directory); default = ldap
  • LDAP_AUTH_USERNAMEFORMAT: default = uid=%s,cn=users,cn=accounts,dc=example,dc=com
  • LDAP_URL: URL of LDAP server; default = ldap://ldap.example.com:389
  • LDAP_DEFAULT_ADMINS: comma separated list of admin names in ldap; default = admin
  • LDAP_SECURITY_PRINCIPAL: default = uid=admin,cn=users,cn=accounts,dc=example,dc=com
  • LDAP_SECURITY_CREDENTIALS: default = password
  • LDAP_GROUP_SEARCHBASE: default = cn=groups,cn=accounts,dc=example,dc=com
  • LDAP_USER_SEARCHBASE: default = cn=users,cn=accounts,dc=example,dc=com
Storage directory
  • CONTENT_STORE: location of content store; default = ${dir.root} (/alfresco/alf_data)
  • AMP_DIR_ALFRESCO: directory containing AMP files (modules) for alfresco.war (bind mount as volume)
  • AMP_DIR_SHARE: directory containing AMP files (modules) for share.war (bind mount as volume)
SMTP
  • MAIL_HOST: hostname/fqdn of the SMTP server; default = localhost
  • MAIL_PORT: tcp listen port of the SMTP server; default = 25
  • MAIL_PROTOCOL: smtp protocol; default = smtp
  • MAIL_ENCODING: email test encoding = UTF-8
  • MAIL_FROM_DEFAULT_ENABLED: enable email notification using default ip address; default = false
  • MAIL_FROM_DEFAULT: sender email address; default = alfresco@alfresco.org
  • MAIL_SMTP_USERNAME: user to connect the SMTP server; default = empty
  • MAIL_SMTP_PASSWORD: password to connect the SMTP server; default = empty
  • MAIL_SMTP_AUTH: enable smtp authentification; default = false
  • MAIL_SMTP_STARTTLS: enable STARTTLS on smtp protocol (explicit ssl); default = false
  • MAIL_SMTPS_AUTH: enable smtps authentification; default = false
  • MAIL_SMTPS_STARTTLS_ENABLE: enable STARTTLS on smtps protocol (implicit ssl); default = false
  • MAIL_SMTP_TIMEOUT: email notification timeout (milliseconds); default = 30000
  • MAIL_SMTP_DEBUG: enable smtp notification debugging; default = false
SMTP startup test message
  • MAIL_TESTMESSAGE_SEND: enable smtp notification debugging; default = false
  • MAIL_TESTMESSAGE_TO: enable smtp notification debugging; default = empty
  • MAIL_TESTMESSAGE_SUBJECT: subject of the test message; default = Alfresco - Service - SMTP client online
  • MAIL_TESTMESSAGE_TEXT: body of the test message; default = Alfresco SMTP client ready and working
Invitation notification
  • NOTIFICATION_EMAIL_SITEINVITE: enable email notification to user on site invite; default = false
FTP
  • FTP_PORT: port of the FTP server; default = 21
CIFS
  • CIFS_ENABLED: enable smb/cifs file sharing = true
  • CIFS_SERVER_NAME: hostname of the cifs server = localhost
  • CIFS_DOMAIN: workgroup domain of the cifs server = WORKGROUP
Smart Folders

Build from Source

The source code is available at https://github.com/fjudith/alfresco.

Make sure your Docker host has more than 2 GB RAM available. Docker Hub uses 2 GB for automated builds which is not enough, the Alfresco installer will complain and fail. The Docker Toolbox VM also uses 2 GB by default, use VirtualBox to change it to at least 4GB.

git clone https://github.com/fjudith/alfresco.git
cd docker-alfresco
docker build --tag="$(echo $USERNAME | awk '{print tolower($0)}')/alfresco" .

References