Hallo,
für alle, die versuchen den Hibiscus Server mit einer MySQL DB im Docker Composer einzustellen, teile ich meine jetzige Konfiguration mit Euch.
Ich habe die Skripe auf meiner Synology laufen im internen Netz.
Dockerfile für den Bau des Servers, basiert auf diesem Repository: https://github.com/miracle2k/d…cus-server
Die Image baue ich mit auf:
(--network=host, weil mein Container im NAS sonst kein Internet bekommt und die apt-get nicht durchkommen.)
Die wrap.sh Datei sieht bei mir so aus:
Mein docker-compose.yaml sieht mit MySQL folgendermaßen aus:
Ich hoffe es hilft jmd in der Zukunft weiter. Wenn jmd fragen hat, bitte posten.
für alle, die versuchen den Hibiscus Server mit einer MySQL DB im Docker Composer einzustellen, teile ich meine jetzige Konfiguration mit Euch.
Ich habe die Skripe auf meiner Synology laufen im internen Netz.
Dockerfile für den Bau des Servers, basiert auf diesem Repository: https://github.com/miracle2k/d…cus-server
Code
FROM ubuntu:20.04
RUN apt-get update && apt-get -y upgrade
RUN apt-get -y install default-jre
RUN apt-get -y install postgresql-client
RUN apt-get -y install mysql-server
RUN apt-get -y install wget unzip
RUN wget http://www.willuhn.de/products/hibiscus-server/releases/hibiscus-server-2.10.15.zip
RUN unzip hibiscus-server-2.10.15.zip -d / && rm hibiscus-server-2.10.15.zip
ADD wrap.sh /wrap
RUN ["chmod", "+x", "/wrap"]
ENTRYPOINT ["/wrap"]
EXPOSE 8080
RUN apt-get update && apt-get -y upgrade
RUN apt-get -y install default-jre
RUN apt-get -y install postgresql-client
RUN apt-get -y install mysql-server
RUN apt-get -y install wget unzip
RUN wget http://www.willuhn.de/products/hibiscus-server/releases/hibiscus-server-2.10.15.zip
RUN unzip hibiscus-server-2.10.15.zip -d / && rm hibiscus-server-2.10.15.zip
ADD wrap.sh /wrap
RUN ["chmod", "+x", "/wrap"]
ENTRYPOINT ["/wrap"]
EXPOSE 8080
Die Image baue ich mit auf:
Code
docker build -t hibiscus_server --network=host .
(--network=host, weil mein Container im NAS sonst kein Internet bekommt und die apt-get nicht durchkommen.)
Die wrap.sh Datei sieht bei mir so aus:
Code
#!/bin/bash
set -e
cat > /etc/hosts <<EOF
127.0.0.1 hostname localhost #hier anpassen, wenn interner DNS einen hostname hat, der dem container nicht bekannt ist.
EOF
# See for instructions:
# http://www.willuhn.de/products/hibiscus-server/install.php
dbconfig=/hibiscus-server/cfg/de.willuhn.jameica.hbci.rmi.HBCIDBService.properties
case "$DB_DRIVER" in
# Be sure to escape a ':' in DB_ADDR
mysql)
echo "Configuring MySQL db connection to $DB_ADDR"
cat > $dbconfig <<EOF
database.driver=de.willuhn.jameica.hbci.server.DBSupportMySqlImpl
database.driver.mysql.jdbcurl=jdbc\:mysql\://${DB_ADDR/:/\\:}/${DB_NAME}?useUnicode\=Yes&characterEncoding\=ISO8859_1
database.driver.mysql.username=${DB_USERNAME}
database.driver.mysql.password=${DB_PASSWORD}
EOF
;;
postgres)
echo "Configuring PostgreSQL db connection to $DB_ADDR"
cat > $dbconfig <<EOF
database.driver=de.willuhn.jameica.hbci.server.DBSupportPostgreSQLImpl
database.driver.postgresql.jdbcurl=jdbc\:postgresql\://${DB_ADDR/:/\\:}/${DB_NAME}
database.driver.postgresql.username=${DB_USERNAME}
database.driver.postgresql.password=${DB_PASSWORD}
EOF
;;
*)
echo "Configuring local embedded database"
# We'll delete the mysql config for now to use the embedded db
rm $dbconfig
;;
esac
# Write HTTP settings
ssl_val=false
if [ "$USE_SSL" != "" ]; then
ssl_val=true
fi
cat > /hibiscus-server/cfg/de.willuhn.jameica.webadmin.Plugin.properties <<EOF
listener.http.address=0.0.0.0
listener.http.port=${PORT-8080}
listener.http.auth=true
listener.http.ssl=${ssl_val}
EOF
function initdb() {
IFS=':' read -ra ADDR <<< "$DB_ADDR"
DB_HOST=${ADDR[0]}
DB_PORT=${ADDR[1]}
case "$DB_DRIVER" in
postgres)
cmd="psql -h $DB_HOST -p $DB_PORT -U $DB_USERNAME < /hibiscus-server/plugins/hibiscus/sql/postgresql-create.sql"
echo $cmd
eval PGPASSWORD=$DB_PASSWORD $cmd
;;
mysql)
cmd="mysql --user=$DB_USERNAME -p$DB_PASSWORD -h $DB_HOST hibiscus < /hibiscus-server/plugins/hibiscus/sql/mysql-create.sql"
echo $cmd
eval $cmd
;;
*)
echo "Don't know how to initialize database for driver $DB_DRIVER"
;;
esac
}
if [ "$*" == "initdb" ]; then
initdb
exit
fi
# Write configuration file based on desired database driver
${@-/hibiscus-server/jameicaserver.sh -p $PASSWORD -f /srv/hibiscus}
set -e
cat > /etc/hosts <<EOF
127.0.0.1 hostname localhost #hier anpassen, wenn interner DNS einen hostname hat, der dem container nicht bekannt ist.
EOF
# See for instructions:
# http://www.willuhn.de/products/hibiscus-server/install.php
dbconfig=/hibiscus-server/cfg/de.willuhn.jameica.hbci.rmi.HBCIDBService.properties
case "$DB_DRIVER" in
# Be sure to escape a ':' in DB_ADDR
mysql)
echo "Configuring MySQL db connection to $DB_ADDR"
cat > $dbconfig <<EOF
database.driver=de.willuhn.jameica.hbci.server.DBSupportMySqlImpl
database.driver.mysql.jdbcurl=jdbc\:mysql\://${DB_ADDR/:/\\:}/${DB_NAME}?useUnicode\=Yes&characterEncoding\=ISO8859_1
database.driver.mysql.username=${DB_USERNAME}
database.driver.mysql.password=${DB_PASSWORD}
EOF
;;
postgres)
echo "Configuring PostgreSQL db connection to $DB_ADDR"
cat > $dbconfig <<EOF
database.driver=de.willuhn.jameica.hbci.server.DBSupportPostgreSQLImpl
database.driver.postgresql.jdbcurl=jdbc\:postgresql\://${DB_ADDR/:/\\:}/${DB_NAME}
database.driver.postgresql.username=${DB_USERNAME}
database.driver.postgresql.password=${DB_PASSWORD}
EOF
;;
*)
echo "Configuring local embedded database"
# We'll delete the mysql config for now to use the embedded db
rm $dbconfig
;;
esac
# Write HTTP settings
ssl_val=false
if [ "$USE_SSL" != "" ]; then
ssl_val=true
fi
cat > /hibiscus-server/cfg/de.willuhn.jameica.webadmin.Plugin.properties <<EOF
listener.http.address=0.0.0.0
listener.http.port=${PORT-8080}
listener.http.auth=true
listener.http.ssl=${ssl_val}
EOF
function initdb() {
IFS=':' read -ra ADDR <<< "$DB_ADDR"
DB_HOST=${ADDR[0]}
DB_PORT=${ADDR[1]}
case "$DB_DRIVER" in
postgres)
cmd="psql -h $DB_HOST -p $DB_PORT -U $DB_USERNAME < /hibiscus-server/plugins/hibiscus/sql/postgresql-create.sql"
echo $cmd
eval PGPASSWORD=$DB_PASSWORD $cmd
;;
mysql)
cmd="mysql --user=$DB_USERNAME -p$DB_PASSWORD -h $DB_HOST hibiscus < /hibiscus-server/plugins/hibiscus/sql/mysql-create.sql"
echo $cmd
eval $cmd
;;
*)
echo "Don't know how to initialize database for driver $DB_DRIVER"
;;
esac
}
if [ "$*" == "initdb" ]; then
initdb
exit
fi
# Write configuration file based on desired database driver
${@-/hibiscus-server/jameicaserver.sh -p $PASSWORD -f /srv/hibiscus}
Mein docker-compose.yaml sieht mit MySQL folgendermaßen aus:
Code
version: '3.1'
services:
hibiscus-server:
image: hibiscus_server
#command: initdb # beim ersten Durchlauf mit MySQL muss einmal mit initdb die Datenbanktabellen angelegt werden.
ports:
- "8080:8080"
environment:
PASSWORD: foo
DB_DRIVER: mysql
DB_ADDR: db
DB_NAME: hibiscus
DB_USERNAME: hibiscus
DB_PASSWORD: hibiscus
USE_SSL: false
depends_on:
- db
db:
container_name: hibiscus_db
image: mysql
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: hibiscus
MYSQL_USER: hibiscus
MYSQL_PASSWORD: hibiscus
volumes:
- db_data:/var/lib/mysql
# optional:
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -u root -prootpass | grep 'mysqld is alive' || exit 1"]
volumes:
db_data:
services:
hibiscus-server:
image: hibiscus_server
#command: initdb # beim ersten Durchlauf mit MySQL muss einmal mit initdb die Datenbanktabellen angelegt werden.
ports:
- "8080:8080"
environment:
PASSWORD: foo
DB_DRIVER: mysql
DB_ADDR: db
DB_NAME: hibiscus
DB_USERNAME: hibiscus
DB_PASSWORD: hibiscus
USE_SSL: false
depends_on:
- db
db:
container_name: hibiscus_db
image: mysql
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: hibiscus
MYSQL_USER: hibiscus
MYSQL_PASSWORD: hibiscus
volumes:
- db_data:/var/lib/mysql
# optional:
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -u root -prootpass | grep 'mysqld is alive' || exit 1"]
volumes:
db_data:
Ich hoffe es hilft jmd in der Zukunft weiter. Wenn jmd fragen hat, bitte posten.