Как развернуть / скопировать приложение и адаптер ресурсов в образ Payara Docker
Я пытаюсь создать образ Docker "из payara/server-full", но мне нужно скопировать и мое приложение, и адаптер ресурсов ActiveMQ в $DEPLOY_DIR
,
Следуя примеру на https://hub.docker.com/r/payara/server-full/:
FROM payara/server-full:174
COPY domain.xml /opt/payara41/glassfish/domains/domain1/config/
COPY sqljdbc4.jar ${PAYARA_PATH}/glassfish/domains/${PAYARA_DOMAIN}/lib
COPY activemq-rar.rar $DEPLOY_DIR
COPY my-app.ear $DEPLOY_DIR
EXPOSE 8080 8181
Я постоянно получаю и ошибки в моем приложении:
[#|2018-02-23T20:30:09.450+0000|SEVERE|Payara 4.1|javax.enterprise.system.core|_ThreadID=1;_ThreadName=main;_TimeMillis=1519417809450;_LevelValue=1000;|
Exception while loading the app : EJB Container initialization error
com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: Resource adapter activemq-rar is not deployed
at com.sun.enterprise.connectors.inbound.ConnectorMessageBeanClient.getActiveResourceAdapter(ConnectorMessageBeanClient.java:321)
at com.sun.enterprise.connectors.inbound.ConnectorMessageBeanClient.setup(ConnectorMessageBeanClient.java:166)
at org.glassfish.ejb.mdb.MessageBeanContainer.<init>(MessageBeanContainer.java:236)
at org.glassfish.ejb.mdb.MessageBeanContainerFactory.createContainer(MessageBeanContainerFactory.java:63)
at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:225)
at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:290)
at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:100)
at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:209)
at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:318)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:497)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:220)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:508)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:544)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:540)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:360)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:539)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:570)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:562)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:360)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:561)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1469)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:111)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1851)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1727)
at com.sun.enterprise.admin.cli.embeddable.CommandExecutorImpl.executeCommand(CommandExecutorImpl.java:169)
at com.sun.enterprise.admin.cli.embeddable.CommandExecutorImpl.run(CommandExecutorImpl.java:94)
at com.sun.enterprise.glassfish.bootstrap.GlassFishMain$Launcher.runCommand(GlassFishMain.java:235)
at com.sun.enterprise.glassfish.bootstrap.GlassFishMain$Launcher.doBootCommands(GlassFishMain.java:275)
at com.sun.enterprise.glassfish.bootstrap.GlassFishMain$Launcher.launch(GlassFishMain.java:130)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.enterprise.glassfish.bootstrap.GlassFishMain.main(GlassFishMain.java:104)
at com.sun.enterprise.glassfish.bootstrap.ASMain.main(ASMain.java:54)
|#]
Похоже, он не развернут:
$ docker container exec -i -t 113e78a53c7a /bin/bash
payara@113e78a53c7a:~$ ls glassfish/domains/domain1/applications
__internal ejb-timer-service-app my-app
$ ls deployments/
activemq-rar.rar my-app.ear
1 ответ
Причина, по которой RAR не развернут, может заключаться в том, что приложение развертывается первым. Проверьте сгенерированный post-boot-commands.asadmin
чтобы увидеть порядок выполнения команд asadmin при загрузке.
Чтобы сделать порядок развертывания детерминированным, создайте свой собственный файл команд post boo и установите переменную среды docker POSTBOOT_COMMANDS
указать на него, чтобы использовать его вместо сгенерированного командного файла.