2015-09-01 2 views
1

Я пытаюсь создать образ Ducker Wildfly с источником данных postgres.Как добавить модуль в Wildfly с помощью CLI

Когда я создаю файл docker, он всегда терпит неудачу с разрешением Отказано, когда я пытаюсь установить модуль postgres.

Мой dockerfile выглядит выглядеть так:

FROM wildflyext/wildfly-camel 

RUN /opt/jboss/wildfly/bin/add-user.sh admin admin --silent 
ADD postgresql-9.4-1201.jdbc41.jar /tmp/ 
ADD config.sh /tmp/ 
ADD batch.cli /tmp/ 
RUN /tmp/config.sh 

Который называет следующие:

#!/bin/bash 

JBOSS_HOME=/opt/jboss/wildfly 
JBOSS_CLI=$JBOSS_HOME/bin/jboss-cli.sh 
JBOSS_MODE=${1:-"standalone"} 
JBOSS_CONFIG=${2:-"$JBOSS_MODE.xml"} 

function wait_for_wildfly() { 
    until `$JBOSS_CLI -c "ls /deployment" &> /dev/null`; do 
    sleep 10 
    done 
} 

echo "==> Starting WildFly..." 
$JBOSS_HOME/bin/$JBOSS_MODE.sh -c $JBOSS_CONFIG > /dev/null & 

echo "==> Waiting..." 
wait_for_wildfly 

echo "==> Executing..." 
$JBOSS_CLI -c --file=`dirname "$0"`/batch.cli --connect 

echo "==> Shutting down WildFly..." 
if [ "$JBOSS_MODE" = "standalone" ]; then 
    $JBOSS_CLI -c ":shutdown" 
else 
    $JBOSS_CLI -c "/host=*:shutdown" 
fi 

И

batch 

module add --name=org.postgresql --resources=/tmp/postgresql-9.4-1201.jdbc41.jar --dependencies=javax.api,javax.transaction.api 
/subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql,driver-module-name=org.postgresql,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource) 

run-batch 

Выход при строительстве является:

==> Запуск WildFly ... ==> Ожидание ... ==> Выполнение ... Не удалось найти файл при копировании файловой системы /tmp/postgresql-9.4-1201.jdbc41.jar в /выбрать/JBoss/wildfly/модули/орг/PostgreSQL/главная/PostgreSQL-9.4-1201.jdbc41.jar: /tmp/postgresql-9.4-1201.jdbc41.jar (отказано в)

Какие разрешения требуется, и где я устанавливаю разрешение (ы)?

Благодаря

ответ

3

кажется файл JAR не читаемый jboss пользователя (пользователя пришедшего от родительского образа). postgresql-9.4-1201.jdbc41.jar добавляется под корень пользователя - найти информацию в this GitHub discussion.

Вы могли

  • либо добавить разрешения на JAR файл перед добавлением его к изображению
  • или добавить разрешения для JAR-файла в образе после добавления
  • или изменить владельца файла на изображении

Простейшее решение может быть первым. Другие 2 решения нуждаются также в переключении пользователя на root (USER root в файл докеров), а затем обратно в jboss.

+0

Спасибо. Изменение разрешений на банку перед ее добавлением привело меня немного дальше. Теперь я получаю: 'Пакет не удалось со следующей ошибкой (вы остаетесь в режиме пакетного редактирования, чтобы иметь возможность исправить ошибку): {" WFLYCTL0062: Сложная операция не выполнена и была отброшена. Шаги, которые не удались: "=> {"Operation step-1" => "WFLYJCA0041: Не удалось загрузить модуль для драйвера [org.postgresql]"}} ' – Magick

+0

У вас есть правильный JAR с драйвером? Меня устраивает.Тем не менее вам не нужно использовать пакетный режим в batch.cli (поскольку «добавление модуля» - это команда, а не операция, которая может быть использована в пакете, - поэтому у вас есть пакет с одной операцией). – kwart

+0

Привет @kwart, спасибо за помощь. Я использую тот же самый драйвер, о котором вы говорили, - postgresql-9.4-1201.jdbc41.jar. Не могли бы вы поделиться с командой cli, которую вы используете для добавления драйвера? Я использую пакет, так как я хотел бы 1) добавить драйвер, затем 2) добавить datasource. – Magick

0

Вот совет: сделайте файл Cli так:

connect 
module add --name=sqlserver.jdbc [email protected][email protected]/libext/jtds-1.3.1.jar --dependencies=javax.api,javax.transaction.api 
/subsystem=datasources/jdbc-driver=sqlserver:add(driver-module-name=sqlserver.jdbc,driver-name=sqlserver,[email protected][email protected]) 
/subsystem=datasources/[email protected]@:add(jndi-name=java:jboss/@[email protected],enabled="true",use-java-context="true",driver-name=sqlserver,connection-url="@[email protected]",[email protected][email protected],[email protected][email protected],validate-on-match=true,background-validation=true) 

заменить @ VAR @ нашей собственной ценности ... и он должен работать! Будьте осторожны, чем JBOSS/Wildfly 10 считают относительно jar -ресурсы по умолчанию, но wildfly 8 думаю, что этот путь может сделать вас странным! ;-)

ура!