2017-12-05 4 views
0

Ich habe einen WildFly 10 Pod und einen MySQL 5.7 Pod in Openshift V3. Ich möchte Umgebungsvariablen in meiner Standalone.xml verwenden, wie ich in Openshift V2 verwendet wurde, um meine MySQL-Datenquelle zu konfigurieren.Ersetze Umgebungsvariablen in standalone.xml, wenn ich einen mysql-Dienst unter openshift verwende

Ich folgte diesem Leitfaden: https://github.com/openshift-s2i/s2i-wildfly

Ich habe einen .s2i Ordner und erstellt eine Datei mit dem Namen: Umwelt.

ich hinzugefügt, um die ‚Umwelt‘ die folgenden Schlüssel-Datei:

MYSQL_DATABASE=<DATABASE_NAME> 

Die <DATABASE_NAME> natürlich ist mit den realen Datenbanknamen ersetzt.

In meinem standalone.xml ich habe:

<subsystem xmlns="urn:jboss:domain:datasources:4.0"> 
    <datasources> 
     <datasource jta="false" jndi-name="java:/<DATABASE_NAME>" pool-name="pool_name" enabled="true" use-ccm="false"> 
      <connection-url>jdbc:mysql://MYSQL_SERVICE_HOST:MYSQL_SERVICE_PORT/<DATABASE_NAME>?useSSL=false</connection-url> 
      <driver-class>com.mysql.jdbc.Driver</driver-class> 
      <driver>mysql</driver> 
      <security> 
       <user-name>MYSQL_USER</user-name> 
       <password>MYSQL_PASSWORD </password> 
      </security> 
      <validation> 
       <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/> 
       <background-validation>true</background-validation> 
       <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/> 
      </validation> 
     </datasource> 
     <drivers> 
      <driver name="mysql" module="com.mysql.jdbc"> 
       <driver-class>com.mysql.jdbc.Driver</driver-class> 
      </driver>      
     </drivers> 
    </datasources> 
</subsystem> 

Wenn von den realen Werten der Umgebungsvariablen zu ersetzen, die MySQL-Verbindung funktioniert und Wildfly Stiefel mit Erfolg auf.

Was mache ich falsch?

ich voran auch jede Umgebungsvariable in standalone.xml mit dem Dollarzeichen, aber noch kein Glück ...

Antwort

1

In Openshift (für Wildfly) Sie diesen Ansatz verwenden, sollten Umgebungsvariablen verwenden:

${env.DATABASE_NAME}

zB:

Zuerst müssen Sie diese Variablen in der DeploymentConfig hinzufügen:

MYSQL_USER=<mysql_username> 
MYSQL_PASSWORD=<mysql_password> 

Wenn Sie einen Dienst mit dem Namen erstellt haben msyql im selben Projekt/naspace von Wildfly der Schote Sie die Einstellungen dieser beiden anderen Umgebungsvariablen überspringen könnte:

MYSQL_SERVICE_HOST=<mysql_host> 
MYSQL_SERVICE_PORT=<mysql_port> 

Dies, weil jeder pod gestartet haben eine Reihe von injizierten Umgebungsvariablen der anderen Dienste vor ihm erstellt (wie Hosts, Ports, etc etc).

Dann können Sie die Datenquelle konfigurieren:

<subsystem xmlns="urn:jboss:domain:datasources:4.0"> 
    <datasources> 
     <datasource jta="false" jndi-name="java:/${env.DATABASE_NAME}" pool-name="pool_name" enabled="true" use-ccm="false"> 
      <connection-url>jdbc:mysql://${env.MYSQL_SERVICE_HOST}:${env.MYSQL_SERVICE_PORT}/<DATABASE_NAME>?useSSL=false</connection-url> 
      <driver-class>com.mysql.jdbc.Driver</driver-class> 
      <driver>mysql</driver> 
      <security> 
       <user-name>${env.MYSQL_USER}</user-name> 
       <password>${env.MYSQL_PASSWORD}</password> 
      </security> 
      <validation> 
       <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/> 
       <background-validation>true</background-validation> 
       <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/> 
      </validation> 
     </datasource> 
     <drivers> 
      <driver name="mysql" module="com.mysql.jdbc"> 
       <driver-class>com.mysql.jdbc.Driver</driver-class> 
      </driver>      
     </drivers> 
    </datasources> 
</subsystem> 

HINWEIS: Ich schlage vor, die DeploymentConfig Umgebungen verwenden variables anstelle der Verwendung von statischen Variablen in den enviroments Datei in .s2i, so dass Sie das gleiche verwenden können Quell-Repository für verschiedene OpenShift-Umgebungen/Projekte/Namespaces (Dev, Test, Integration, Prod).

+1

funktioniert die Lösung mit $ {env.XXX}. Allerdings musste ich die bereits gemachten mysql-Umgebungsvariablen manuell hinzufügen, PLUS fügen Sie manuell eine Deployment-Konfigurationsvariable für MYSQL_SERVICE_HOST hinzu. Bitte klären Sie dies in Ihrer Antwort und ich werde es als die richtige Antwort akzeptieren ;-) –

+0

Weitere Informationen über die DeploymentConfig-Setup- und Umgebungsvariablen wurden hinzugefügt. – eljeko

Verwandte Themen