opennms-forge / docker-horizon-core-web

🐳 Core and Web application service for Horizon by OpenNMS
MIT License
30 stars 19 forks source link

Docker run doesn't work #6

Closed mfuhrmann closed 6 years ago

mfuhrmann commented 7 years ago

I followed the howto and got this error.

marcel@scummbar:~/docker-horizon-core-web$ sudo docker run opennms/horizon-core-web:20.0.1-1 -s
OpenNMS configuration already initialized.
runjava: Looking for an appropriate JRE...
runjava: Checking for an appropriate JRE in JAVA_HOME...
runjava: found: "/usr/lib/jvm/java/bin/java" is an appropriate JRE
runjava: value of "/usr/lib/jvm/java/bin/java" stored in configuration file
==============================================================================
OpenNMS Installer
==============================================================================

Configures PostgreSQL tables, users, and other miscellaneous settings.

DEBUG: Platform is IPv6 ready: true
- searching for libjicmp.so:
  - trying to load /usr/lib64/libjicmp.so: OK
- searching for libjicmp6.so:
  - trying to load /usr/lib64/libjicmp6.so: OK
- searching for libjrrd.so:
  - trying to load /usr/lib64/libjrrd.so: NO
  - trying to load /usr/lib64/libjrrd.so: NO
  - trying to load /libjrrd.so: NO
  - trying to load /opt/opennms/lib/libjrrd.so: NO
  - trying to load /opt/opennms/lib/linux64/libjrrd.so: NO
  - trying to load /usr/java/packages/lib/amd64/libjrrd.so: NO
  - trying to load /usr/lib64/libjrrd.so: NO
  - trying to load /lib64/libjrrd.so: NO
  - trying to load /lib/libjrrd.so: NO
  - trying to load /usr/lib/libjrrd.so: NO
  - trying to load /usr/lib/jni/libjrrd.so: NO
  - trying to load /usr/lib/libjrrd.so: NO
  - trying to load /usr/local/lib/libjrrd.so: NO
  - trying to load /opt/NMSjicmp/lib/32/libjrrd.so: NO
  - trying to load /opt/NMSjicmp/lib/64/libjrrd.so: NO
  - trying to load /opt/NMSjicmp6/lib/32/libjrrd.so: NO
  - trying to load /opt/NMSjicmp6/lib/64/libjrrd.so: NO
- Failed to load the optional jrrd library.
  - This error is not fatal, since jrrd is only required for optional features.
  - For more information, see http://www.opennms.org/index.php/jrrd
- searching for libjrrd2.so:
  - trying to load /usr/lib64/libjrrd2.so: OK
15:46:01.080 [Main] WARN  org.opennms.install.Installer - Could not create file: /opt/opennms/etc/libraries.properties
- using SQL directory... /opt/opennms/etc
- using create.sql... /opt/opennms/etc/create.sql
15:46:01.094 [Main] INFO  org.opennms.core.schema.Migrator - validating database version
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.opennms.bootstrap.Bootstrap$4.run(Bootstrap.java:525)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.opennms.core.schema.MigrationException: an error occurred getting the version from the database
    at org.opennms.core.schema.Migrator.getDatabaseVersion(Migrator.java:183)
    at org.opennms.core.schema.Migrator.validateDatabaseVersion(Migrator.java:211)
    at org.opennms.install.Installer.install(Installer.java:245)
    at org.opennms.install.Installer.main(Installer.java:990)
    ... 6 more
Caused by: java.sql.SQLException: No suitable driver found for jdbc:postgresql://:/template1
    at java.sql.DriverManager.getConnection(DriverManager.java:689)
    at java.sql.DriverManager.getConnection(DriverManager.java:208)
    at org.opennms.core.db.install.SimpleDataSource.getConnection(SimpleDataSource.java:113)
    at org.opennms.core.schema.Migrator.getDatabaseVersion(Migrator.java:171)
    ... 9 more

What I did:

indigo423 commented 7 years ago

Docker run against the image alone does not work, OpenNMS requires a PostgreSQL database, therefore you need to connect to an existing PostgreSQL database or run a whole service stack with docker-compose. If you want to use an existing PostgreSQL database you have to configure the access to the database through environment variables. You will find them in .opennms.env.

xmushimushi commented 7 years ago

I'm also getting this error and i'm following the docker-compose to stack the whole service. Thus, i'm getting 2 containers which separate with psql + hrz.core.web

The psql is running okay with port 5433 and i already have 5432 running for other services. Have no idea why core.web cant take up the 5433 PostgreSQL.

docker-compose.yml

version: '2'

volumes:
  psql.data:
    driver: local
  opennms.data:
    driver: local

networks:
  opennms.net:
    driver: bridge

services:
  database:
    container_name: opennms.psql
    image: postgres:9.6.1
    env_file:
      - .postgres.env
    networks:
      - opennms.net
    volumes:
      - /volume1/docker-compose/postgresql/data:/var/lib/postgresql/data
    ports:
      - "5433:5433"

  opennms:
    container_name: opennms.hzn.core.web
    image: opennms/horizon-core-web:20.0.1-1
    env_file:
      - .opennms.env
      - .postgres.env
    networks:
      - opennms.net
    depends_on:
      - database
    volumes:
      - /volume1/docker-compose/opennms/etc:/opt/opennms/etc
      - /volume1/docker-compose/opennms/data:/opennms-data
    command: ["-s"]
    ports:
      - "8980:8980"
      - "18980:18980"
      - "1099:1099"
      - "8101:8101"
      - "61616:61616"
      - "5817:5817"
      - "162:162/udp"

Docker-Compose Version

ash-4.3# docker-compose version
docker-compose version 1.14.0, build c7bdf9e

Docker-Engine Version

ash-4.3# docker version
Client:
 Version:      1.11.2
 API version:  1.23
 Go version:   go1.8
 Git commit:   5be46ee-synology
 Built:        Fri May 12 16:36:47 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.11.2
 API version:  1.23
 Go version:   go1.8
 Git commit:   5be46ee-synology
 Built:        Fri May 12 16:36:47 2017
 OS/Arch:      linux/amd64
indigo423 commented 6 years ago

@xmushimushi you can leave the port for PostgreSQL on 5432, if you have 5432 already used, change the expose port mapping from 5432:5432 to 5433:5432.

This means incoming connections on your local machine on port 5433 will be forwarded to the running container port 5432.

kamritk commented 6 years ago

Running opennms in Docker will create IO issue if yes please let know how to overcome we have around 1 lakh interfaces among that 75k interfaces enabled for polling