Ir al contenido
Otras versiones

Cargando…

Uso de Docker

Docker es una plataforma de software que permite crear, probar y desplegar aplicaciones rápidamente. Docker empaqueta el software en unidades estandarizadas llamadas contenedores, que incluyen todo lo que el software necesita para ejecutarse: bibliotecas, herramientas del sistema, código y entorno de ejecución. Con Docker puede desplegar y escalar aplicaciones rápidamente en cualquier entorno, con la seguridad de que su código se ejecutará.

Hay una imagen pública de Docker disponible en https://hub.docker.com/repository/docker/openkm/openkm-ce, que es la forma más sencilla de poner en marcha OpenKM en su servidor.

Consulte la documentación de Docker para ver las instrucciones de instalación y saber más sobre Docker.

Una vez instalado Docker, cree el archivo openkm.properties adecuado o configúrelo mediante variables de entorno, y ejecute este comando para obtener su instancia de OpenKM:

Ventana de terminal
$ docker run --name openkm-ce -p 8080:8080 openkm/openkm-ce

Y después, dirija su navegador a http://localhost:8080/. El usuario y la contraseña por defecto son “okmAdmin” / “admin”.

De esta forma puede crear un contenedor con la base de datos H2 integrada por defecto (no recomendada para producción, pero perfectamente válida para pruebas):

Ventana de terminal
$ 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 openkm/openkm-ce:7.0.1

Este es un ejemplo que puede utilizarse para crear un contenedor con MySQL, aunque la forma recomendada es utilizar Docker Compose:

Ventana de terminal
$ 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 openkm/openkm-ce:7.0.1

La 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 registros del contenedor:

Ventana de terminal
$ docker logs -f openkm

Para detener el contenedor:

Ventana de terminal
$ docker stop openkm

Para volver a iniciarlo:

Ventana de terminal
$ docker start openkm

Para acceder al contenedor:

Ventana de terminal
$ docker exec -ti openkm bash

Para más acciones, consulte el sitio de documentación de Docker.

Estas son las variables de entorno que pueden utilizarse para configurar el contenedor de OpenKM:

Variable Descripción
DATABASE_DRIVER El driver JDBC de la base de datos que se conecta a ella.
DATABASE_URL La URL JDBC para conectarse a 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.

Para facilitar toda esta configuración, recomendamos utilizar Docker Compose. Consulte la documentación de Docker Compose para ver las instrucciones de instalación y más información.

Este es un ejemplo de archivo de configuración de Docker Compose que utiliza variables de entorno, con 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/16

Este es otro ejemplo de configuración de Docker Compose:

version: '3.2'
services:
openkm_mysql:
image: openkm/openkm-ce:7.0.1
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/16

Este es el archivo openkm.properties:

# OpenKM Hibernate configuration values
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://mysql:3306/okmdb?useUnicode=true&characterEncoding=UTF8&serverTimezone=CET&nullNamePatternMatchesAll=true
spring.datasource.username=openkm
spring.datasource.password=openkm
# JPA stuff
spring.jpa.hibernate.ddl-auto=create-only
spring.jpa.properties.hibernate.dialect=com.openkm.db.dialect.MySQL5InnoDBDialect
# Cluster
cluster.enabled=false
cluster.node=master
# Logging config
spring.output.ansi.enabled=always