Usar Docker
Docker es una plataforma software que le permite construir, probar y desplegar aplicaciones rápidamente. Docker empaqueta el software en unidades estandarizadas llamadas contenedores con todo lo que el software necesita para funcionar, incluyendo librerías, herramientas del sistema, código y entorno de ejecución. Usando Docker, puede desplegar y escalar aplicaciones rápidamente en cualquier entorno y tener la certeza de que su código funcionará.
Hay una imagen de Docker disponible en nuestro repositorio privado de Docker en https://docker.openkm.com. Es la forma más sencilla de poner OpenKM en marcha en su servidor. Si desea usar esta imagen, envíe un ticket de soporte y le proporcionaremos acceso al repositorio.
Consulte la documentación de Docker para las instrucciones de instalación y para saber más sobre Docker.
Una vez instalado Docker, cree el fichero openkm.properties apropiado o configúrelo usando variables de entorno, y ejecute este comando para obtener su instancia de OpenKM:
$ docker run --name openkm -p 8080:8080 -v ${PWD}/openkm.properties docker.openkm.com/private/professionalDespués, apunte su navegador a http://localhost:8080/. El usuario y contraseña por defecto son “okmAdmin” / “admin”.
De esta forma, puede crear un contenedor con la base de datos H2 embebida por defecto (no recomendada para producción, pero perfectamente válida para pruebas):
$ docker run -d --name openkm -p 8080:8080 -v myvol:/opt/tomcat \ -e DATABASE_DRIVER=org.h2.Driver \ -e DATABASE_URL=jdbc:h2:/opt/tomcat/okmdb \ -e DATABASE_DIALECT=com.openkm.db.dialect.H2Dialect \ --restart=unless-stopped docker.openkm.com/private/professional:7.1.13Este es un ejemplo que puede usarse para crear un contenedor usando MySQL, pero la forma recomendada es usar Docker Compose:
$ docker run -d --name openkm -p 8080:8080 -v myvol:/opt/tomcat \ -e DATABASE_DRIVER="com.mysql.cj.jdbc.Driver" \ -e DATABASE_URL="jdbc:mysql://172.17.0.1:3306/dbtest?useUnicode=true&characterEncoding=UTF8&serverTimezone=CET&nullNamePatternMatchesAll=true" \ -e DATABASE_USER="openkm" \ -e DATABASE_PASSWORD="openkm" \ -e DATABASE_DIALECT="com.openkm.db.dialect.MySQL5InnoDBDialect" \ --restart=unless-stopped docker.openkm.com/private/professional:7.1.13La base de datos puede crearse de esta forma:
CREATE USER 'openkm'@'%' IDENTIFIED BY 'openkm';CREATE DATABASE dbtest DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_bin;GRANT ALL ON dbtest.* TO 'openkm'@'%' WITH GRANT OPTION;Para ver los logs del contenedor:
$ docker logs -f openkmPara detener el contenedor:
$ docker stop openkmPara iniciarlo de nuevo:
$ docker start openkmPara acceder al contenedor:
$ docker exec -ti openkm bashPara más acciones, consulte el sitio de documentación de Docker.
Configuración
Sección titulada «Configuración»Estas son las variables de entorno que pueden usarse para configurar el contenedor de OpenKM:
| Variable | Descripción |
|---|---|
| DATABASE_DRIVER | El driver JDBC de base de datos que conecta con la base de datos. |
| DATABASE_URL | La URL JDBC para conectar con la base de datos. |
| DATABASE_USER | El usuario de la base de datos. |
| DATABASE_PASSWORD | La contraseña del usuario de la base de datos. |
| DATABASE_DIALECT | El dialecto de base de datos de Hibernate. |
Docker Compose
Sección titulada «Docker Compose»Para facilitar toda esta configuración, recomendamos usar Docker Compose. Consulte la documentación de Docker Compose para las instrucciones de instalación y más información.
Este es un fichero de configuración de Docker Compose de ejemplo usando variables de entorno, donde se usa MySQL como base de datos:
version: '3.2'
services:
openkm_mysql: image: docker.openkm.com/private/professional:7.1.13 container_name: openkm_mysql hostname: openkm ports: - 8080:8080 volumes: - openkm_mysql:/opt/tomcat environment: - DATABASE_DRIVER=com.mysql.cj.jdbc.Driver - DATABASE_URL=jdbc:mysql://mysql:3306/okmdb?useUnicode=true&characterEncoding=UTF8&serverTimezone=CET&nullNamePatternMatchesAll=true - DATABASE_USER=openkm - DATABASE_PASSWORD=openkm - DATABASE_DIALECT=com.openkm.db.dialect.MySQL5InnoDBDialect - TZ=Europe/Madrid entrypoint: [ "wait-for-it.sh", "mysql:3306", "--timeout=0", "--strict", "--", "entrypoint.sh" ] links: - mysql:mysql networks: skynet: ipv4_address: 172.28.1.1
mysql: image: mysql:8.0.18 container_name: okmdb_mysql hostname: mysql command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8 --collation-server=utf8_bin volumes: - okmdb_mysql:/var/lib/mysql environment: - MYSQL_DATABASE=okmdb - MYSQL_USER=openkm - MYSQL_PASSWORD=openkm - MYSQL_ROOT_PASSWORD=openkm security_opt: - seccomp:unconfined networks: skynet: ipv4_address: 172.28.1.2
volumes: openkm_mysql: okmdb_mysql:
networks: skynet: ipam: driver: default config: - subnet: 172.28.0.0/16Este es otro fichero de configuración de Docker Compose de ejemplo:
version: '3.2'
services:
openkm_mysql: image: docker.openkm.com/private/professional:7.1.13 container_name: openkm_mysql hostname: openkm ports: - 8080:8080 volumes: - ${PWD}/openkm.properties:/opt/tomcat/openkm.properties - ${PWD}/repository:/opt/tomcat/repository environment: - TZ=Europe/Madrid entrypoint: [ "wait-for-it.sh", "mysql:3306", "--timeout=0", "--strict", "--", "entrypoint.sh" ] links: - mysql:mysql networks: skynet: ipv4_address: 172.28.1.1
mysql: image: mysql:8.0.18 container_name: okmdb_mysql hostname: mysql command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8 --collation-server=utf8_bin volumes: - ${PWD}/mysql:/var/lib/mysql environment: - MYSQL_DATABASE=okmdb - MYSQL_USER=openkm - MYSQL_PASSWORD=openkm - MYSQL_ROOT_PASSWORD=openkm security_opt: - seccomp:unconfined networks: skynet: ipv4_address: 172.28.1.2
networks: skynet: ipam: driver: default config: - subnet: 172.28.0.0/16Este es el fichero openkm.properties:
# OpenKM Hibernate configuration valuesspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://mysql:3306/okmdb?useUnicode=true&characterEncoding=UTF8&serverTimezone=CET&nullNamePatternMatchesAll=truespring.datasource.username=openkmspring.datasource.password=openkm
# JPA stuffspring.jpa.hibernate.ddl-auto=create-onlyspring.jpa.properties.hibernate.dialect=com.openkm.db.dialect.MySQL5InnoDBDialect
# Clustercluster.enabled=falsecluster.node=master
# Logging configspring.output.ansi.enabled=always