Я использую онлайн-скрипт WLST для настройки сервера WebLogic во время сборки образа Docker.По сути, сборка образа Docker запускает WebLogic и выполняет следующий скрипт
import os
import time
import getopt
import sys
import re
# Deployment Information
domainname = os.environ.get('DOMAIN_NAME', 'base_domain')
domainhome = os.environ.get('DOMAIN_HOME', '/u01/oracle/user_projects/domains/' + domainname)
cluster_name = os.environ.get("CLUSTER_NAME", "DockerCluster")
admin_name = os.environ.get("ADMIN_NAME", "AdminServer")
connect(username,password,server_url)
edit()
print ""
print "================== DataSource ==================="
startEdit()
# Create Datasource
# ==================
cd('/')
cmo.createJDBCSystemResource(dsname)
cd('/JDBCSystemResources/' + dsname + '/JDBCResource/' + dsname)
cmo.setName(dsname)
cd('/JDBCSystemResources/' + dsname + '/JDBCResource/' + dsname)
cd('JDBCDataSourceParams/' + dsname)
set('JNDINames', jarray.array([String(dsjndiname)], String))
cd('/JDBCSystemResources/' + dsname + '/JDBCResource/' + dsname)
cd('JDBCDriverParams/' + dsname)
cmo.setDriverName(dsdriver)
cmo.setUrl(dsurl)
set('PasswordEncrypted', encrypt(dspassword))
print 'create JDBCDriverParams Properties'
cd('Properties/' + dsname)
cmo.createProperty('user')
cd('Properties/user')
cmo.setValue(dsusername)
print 'create JDBCConnectionPoolParams'
cd('/JDBCSystemResources/' + dsname + '/JDBCResource/' + dsname)
cd('JDBCConnectionPoolParams/' + dsname)
set('TestTableName','SQL SELECT 1 FROM DUAL')
# Assign
# ======
#assign('JDBCSystemResource', dsname, 'Target', admin_name)
#assign('JDBCSystemResource', dsname, 'Target', cluster_name)
cd('/SystemResources/' + dsname)
set('Targets',jarray.array([ObjectName('com.bea:Name=' + targetname + ',Type=' + targettype)], ObjectName))
# Update Domain, Close It, Exit
# ==========================
#save()
activate()
print ""
#disconnect()
exit()
Проблема в том, что хост базы данных не существует во время сборки, поскольку это имя контейнера другого контейнера Docker вокружение docker-compose.С помощью этого сценария установка цели для источника данных вызывает исключение, так как имя хоста не может быть разрешено, таким образом сбой вызова активации, а также всех следующих сценариев WLST, который зависит от источника данных.Тем не менее, я не хочу устанавливать цель вручную после запуска и запуска всей среды.Как мне избежать исключения в этом случае?