2017-12-05 23 views
0

Openshift V3에서 실행중인 WildFly 10 pod 및 mysql 5.7 포드가 있습니다. 내 MySQL 데이터 소스를 구성하기 위해 Openshift V2에서 사용 되었기 때문에 standalone.xml에서 환경 변수를 사용하고 싶습니다. openshift에서 mysql 서비스를 사용할 때 standalone.xml의 환경 변수를 대체하십시오.

나는이 가이드를 따라 :

https://github.com/openshift-s2i/s2i-wildfly은 내가 .s2i 폴더를 추가하고 거기라는 파일을 만들어 : 환경을 제공합니다.

MYSQL_DATABASE=<DATABASE_NAME> 

<DATABASE_NAME> 실제 데이터베이스 이름으로 대체 물론이다

본인은 '환경'다음 키를 파일에 추가됩니다. 내 standalone.xml에서

나는이 :

<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> 

실제 값으로 환경 변수를 대체 MySQL의 연결 작업 및 성공 제이보스 부팅.

내가 뭘 잘못하고 있니?

${env.DATABASE_NAME} :

은 또한 당신이 환경 변수를 사용하는이 방법을 사용한다 (제이보스에 대한) Openshift에서 ... 달러 기호하지만 여전히 행운과 standalone.xml에

답변

1

각 환경 변수를 접두사

예 :

우선은 DeploymentConfig에 이러한 변수를 추가해야합니다

모든 포드의 뜻을 시작한이 때문에

MYSQL_SERVICE_HOST=<mysql_host> 
MYSQL_SERVICE_PORT=<mysql_port> 

: 당신은 제이보스의 포드 같은 프로젝트/naspace에서 명명 된 서비스 msyql이 다른 두 환경 변수의 설정을 건너 뛸 수를 생성 한 경우

MYSQL_USER=<mysql_username> 
MYSQL_PASSWORD=<mysql_password> 

다른 서비스의 주입 된 환경 변수 집합을 (호스트, 포트 등과 같이) 전에 생성하십시오.

그런 다음 데이터 소스를 구성 할 수 있습니다

<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> 

참고 : 나는 variables 대신 같은 사용할 수 있도록 .s2i에 enviroments에에 파일을 정적 변수를 사용하는 DeploymentConfig 환경을 사용하는 것이 좋습니다 다른 Openshift 환경/프로젝트/네임 스페이스 (dev, test, integration, prod)에 대한 소스 저장소.

+1

$ {env.XXX}의 솔루션이 작동합니다. 그러나 이미 만들어진 mysql 환경 변수를 수동으로 추가해야하고, MYSQL_SERVICE_HOST에 대한 배치 구성 변수를 수동으로 추가해야했습니다. 답을 명확하게 해주십시오. 정답으로 받아 들일 것입니다 :-) –

+0

DeploymentConfig 설정 및 환경 변수에 대한 정보가 더 추가되었습니다. – eljeko