eu consigo por uma variavel de ambiente definida no dockerfile pra ser usada dentro do standalone.xml do servidor jboss ou wildfly ? como que eu faria pra deixar dinamico o datasource por exemplo
eu consigo por uma variavel de ambiente definida no dockerfile pra ser usada dentro do standalone.xml do servidor jboss ou wildfly ? como que eu faria pra deixar dinamico o datasource por exemplo
Olá Marcos, tudo bem? Bem você quer indicar a variável de ambiente no Dockerfile mesmo é isso? Bem, acho que seria mais tranquilo você indicar a variável de ambiente em um docker-compose.yml
assim você não precisa ficar recriando a imagem para passar outras variáveis de ambiente. Sendo Java você consegue indicar as variáveis da seguinte forma:
app:
image: casadocodigo:v1-dev
ports:
- '8080:8080'
environment:
USUARIO: 'root'
SENHA: 'password'
JDBC_CONNECTION_STRING: 'jdbc:mysql://beanstalk_mysql:3306/casadocodigo'
E no código você consegue pegar com algo como:
dataSource.setUsername(System.getenv("USUARIO"));
dataSource.setPassword(System.getenv("SENHA"));
dataSource.setUrl(System.getenv("JDBC_CONNECTION_STRING"));
Penso que seria a melhor forma!
Obrigado Jonilson! Eu tinha tentado com expression language direto no standalone.xml, assim
<security>
<user-name>${env.USUARIO}</user-name>
<password>${env.SENHA}</password>
</security>
Mas o wildfly nao conseguiu resolver a variavel de ambiente na subida do servidor
Certo, mas como você realmente indicou essas variáveis de ambiente? Foi no comando docker run
ou foi no Dockerfile realmente? Fala melhor sobre essa parte, e de ante mão acho que você busca exetamente o que esse artigo fala.
Dá uma olhada e fala pra gente se funcionou!
Foi no docker run com -env / -e
SET USUARIO = marcos
docker run -it -d --name jbpm-manager -e USUARIO ....
eu tambem alterei o jboss-cli.xml na tag para true: true
Marcos o comando docker run
deveria ser mais ou menos assim:
docker run -it -d --name jbpm-manager -p 8080:8080
-e USUARIO="user"
-e SENHA="mypassword"
SUA_IMAGEM_AQUI
E no seu arquivo standalone.xml
deveria obter essas imagens da seguinte forma:
<security>
<user-name>${env.POSTGRES_USER}</user-name>
<password>${env.POSTGRES_PASSWORD}</password>
</security>
Fala se funcionou assim!