LogicalDOC Enterprise Edition
Official Docker image for LogicalDOC Enterprise Edition https://www.logicaldoc.com
This Dockerfile is a published build on Docker Hub.
Note: This image requires to be connected to an external database
What is LogicalDOC ?
LogicalDOC is a flexible and highly performant Document Management System platform By leveraging on the best-of-breed Java frameworks, it creates a flexible and powerful document management platform, which thanks to the most advanced presentation technology (Google GWT), is able to meet the needs of usability and more demanding management. LogicalDOC is both document management and collaboration system. The software is loaded with many functions and allows organizing, index, retrieving, controlling and distributing important business documents securely and safely for any organization and individual.
- Manuals: https://docs.logicaldoc.com
- Twitter: https://twitter.com/logicaldoc
- Blog: https://www.logicaldoc.com/blog
Your UserNo
You have to pass your activation code(the UserNo) when you launch this image. If you need an activation code, you can get one delivered to your email by filling-out the form at https://www.logicaldoc.com/try
Start a LogicalDOC instance linked to a MySQL container
- Run the MySQL container
docker run -d --name=mysql-ld --env="MYSQL_ROOT_PASSWORD=mypassword" --env="MYSQL_DATABASE=logicaldoc" --env="MYSQL_USER=ldoc" --env="MYSQL_PASSWORD=changeme" mysql:8.0- Run the LogicalDOC container
docker run -d -p 8080:8080 --env LDOC_USERNO=<your userno> --link mysql-ld logicaldoc/logicaldocThis image includes EXPOSE 8080 (the logicaldoc port). The default LogicalDOC configuration is applied.
Then, access it via http://localhost:8080 or http://host-ip:8080 in a browser. Default User and Password are admin / admin.
Start a LogicalDOC with some settings
docker run -d -p 8080:8080 --env LDOC_USERNO=<your userno> --env LDOC_MEMORY=4000 --link mysql-ld logicaldoc/logicaldocThis will run the same image as above but with 4000 MB memory allocated to LogicalDOC.
Then, access it via http://localhost:8080 or http://host-ip:8080 in a browser.
If you'd like to use an external database instead of a linked mysql-ld container, specify the hostname with DB_HOST and port with DB_PORT along with database name DB_NAME, the password in DB_PASSWORD and the username in DB_USER (if it is something other than ldoc):
$ docker run -d -p 8080:8080 -e DB_HOST=10.1.2.3 -e DB_PORT=3306 -e DB_USER=... -e DB_PASSWORD=... logicaldoc/logicaldocPersistence of configuration and documents
Start as a daemon with attached volumes to persist the configuration and the documents
$ docker run -d --name logicaldoc --restart=always -p 8080:8080 -v logicaldoc-conf:/LogicalDOC/conf -v logicaldoc-repo:/LogicalDOC/repository --link mysql-ld logicaldoc/logicaldocAll document files will be stored in the volume logicaldoc-repo, the configuration files insead are in volume ``logicaldoc-conf`
In this case the physical location of the logicaldoc-conf volume is /var/lib/docker/volumes/logicaldoc-conf/_data while the location of logicaldoc-repo volume is /var/lib/docker/volumes/logicaldoc-repo/_data
Environment Variables
The LogicalDOC image uses environment variables that allow to obtain a more specific setup.
- LDOC_USERNO: your own license activation code (
click here to get a fee trial code) - LDOC_MEMORY: memory allocated for LogicalDOC expressed in MB (default is 2000)
- DB_ENGINE: the database type, possible vaues are: mysql(default), mssql, oracle, postgres
- DB_HOST: the database server host (default is 'mysql-ld')
- DB_PORT: the database communication port (default is 3306)
- DB_NAME: the database name (default is 'logicaldoc')
- DB_INSTANCE: some databases require the instance specification
- DB_USER: the username (default is 'ldoc')
- DB_PASSWORD: the password (default is 'changeme')
- DB_MANUALURL: must be true when using DB_URL (default is 'false')
- DB_URL: the jdbc url to connect to the database (remember to set DB_MANUALURL to 'true')
Stopping and starting the container
Assuming that you have assigned the "logicaldoc" alias to the container
To stop the container use:
$ docker stop logicaldocTo start the container again:
$ docker start logicaldocConfiguration
(You must have enabled data persistence with volume assignment)
To edit the settings file, check the physical location of the logicaldoc-conf volume using:
$ docker volume inspect logicaldoc-confWhich should produce an output similar to this one:
[
{
"Name": "logicaldoc-conf",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/logicaldoc-conf/_data",
"Labels": null,
"Scope": "local"
}
]In this case the physical location of the logicaldoc-conf volume is /var/lib/docker/volumes/logicaldoc-conf/_data.
Performing backups
To backup the existing data, check the physical location of the logicaldoc-conf and logicaldoc-repo volumes using:
$ docker volume inspect logicaldoc-confWhich should produce an output similar to this one:
[
{
"Name": "logicaldoc-conf",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/logicaldoc-conf/_data",
"Labels": null,
"Scope": "local"
}
]$ sudo tar -zcvf backup.tar.gz /var/lib/docker/volumes/logicaldoc-conf/_data /var/lib/docker/volumes/logicaldoc-repo/_data
$ sudo chown `whoami` backup.tar.gzIf an external PostgreSQL or MySQL database or database containers, these too need to be backed up using their respective procedures.
Restoring from a backup
Uncompress the backup archive in the original docker volume using:
$ sudo tar -xvzf backup.tar.gz -C /Building the image
Clone the repository with:
$ git clone https://github.com/logicaldoc/docker.gitChange to the directory of the cloned repository:
$ cd dockerExecute Docker's build command:
$ docker build -t logicaldoc/logicaldoc .Or using an apt cacher to speed up the build:
$ docker build -t logicaldoc/logicaldoc --build-arg APT_PROXY=172.18.0.1:3142 .Replace the IP address 172.18.0.1 with the IP address of the Docker host used from which these commands are running.
Using Docker compose
To deploy a complete production stack using the included Docker compose file execute:
$ docker-compose -f docker-compose.yml up -dThis Docker compose file will provision 2 containers:
- MySQL as the database
- LogicalDOC using the above service container
To stop the stack use:
$ docker-compose -f docker-compose.yml stopThe stack will also create three volumes to store the data of each container. These are:
- ldoc_conf - The LogicalDOC configuration container, normally called
logicaldoc-confwhen not using Docker compose. - ldoc_repository - The LogicalDOC DMS data container for documents and search indexes, normally called
logicaldoc-repowhen not using Docker compose. - ldoc_db - The database volume, in this case MySQL.
Stopping and starting with Docker compose
To stop the services use:
$ docker-compose -f docker-compose.yml stopTo start the services again:
$ docker-compose -f docker-compose.yml startTo remove the stopped containers:
$ docker-compose -f docker-compose.yml rm -vDestroys the containers and all the created volumes:
$ docker-compose -f docker-compose.yml down -vDocker compose examples
Some docker-compose examples are available in the repository of this container on GitHub https://github.com/logicaldoc/docker
... via docker stack deploy or docker-compose
Example stack.yml for logicaldoc:
version: "3.1"
services:
logicaldoc:
depends_on:
- mysql-ld
command: ["./wait-for-it.sh", "mysql-ld:3306", "-t", "30", "--", "/LogicalDOC/logicaldoc.sh", "run"]
image: logicaldoc/logicaldoc
ports:
- 8080:8080
environment:
- LDOC_MEMORY=2000
mysql-ld:
image: mysql:8.0
environment:
- MYSQL_ROOT_PASSWORD=example
- MYSQL_DATABASE=logicaldoc
- MYSQL_USER=ldoc
- MYSQL_PASSWORD=changeme
Run docker stack deploy -c stack.yml logicaldoc , wait for it to initialize completely, and visit http://swarm-ip:8080, http://localhost:8080, or http://host-ip:8080 (as appropriate).
Shell Access
For debugging and maintenance purposes you may want access the containers shell. If you are using Docker version 1.3.0 or higher you can access a running containers shell by starting bash using docker exec:
docker exec -it logicaldoc bash
