Возможно ли разместить в Tomcat какой-либо файл java war или jar? Я ищу много учебников, и единственным решением, которое я нашел, является копирование файла войны проекта в /usr/local/tomcat/webapps/
.
Я действительно использовал это решение, но я хотел бы улучшить свою докерезацию. Моя основная цель - когда я запускаю свои 2 изображения (приложение в tomcat и db-изображении) с помощью docker-compose, я хочу использовать свой локальный файл войны целевой папки в tomcat, и, когда я снова создаю войну после изменения кода, это изменение будут отражаться без остановки контейнеров, их удаления и восстановления. Можете ли вы помочь в этом? Мои попытки не удались. Я хочу это только для цели развития.
Вот мой docker-compose.yml
version: '3'
services:
tomcat-service:
build:
context: ../
dockerfile: docker/app/Dockerfile
volumes:
- D:\myproj\target\app.war:/usr/local/tomcat/webapps/ROOT.war
ports:
- "8080:8080"
depends_on:
- "db-service"
db-service:
build: ./database
ports:
- "5433:5432"
и Dockerfile для этого кота
FROM tomcat:8.0-jre8
RUN rm -rvf /usr/local/tomcat/webapps/ROOT
COPY ./docker/app/context.xml /usr/local/tomcat/conf/
# with following copy command it works, but when I rebuild war file, I need stop docker-compose and build and run it again .. I want use volume instead of copy war
#COPY ./pnp-web/target/pnp.war /usr/local/tomcat/webapps/ROOT.war
EXPOSE 8080
CMD ["catalina.sh", "run"]
С настройкой выше начинается аппликация, но когда я запускаю приложение mvn clean package
больше не загружается
РЕДАКТИРОВАТЬ
Я проверил журнал контейнера tomcat и нашел эту ошибку:
tomcat-cont | 10-Jul-2018 08:20:36.754 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive /usr/local/tomcat/webapps/ROOT.war
tomcat-cont | 10-Jul-2018 08:20:36.858 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start:
tomcat-cont | org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
tomcat-cont | at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
tomcat-cont | at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:755)
tomcat-cont | at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:731)
tomcat-cont | at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
tomcat-cont | at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:973)
tomcat-cont | at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1850)
tomcat-cont | at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
tomcat-cont | at java.util.concurrent.FutureTask.run(FutureTask.java:266)
tomcat-cont | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
tomcat-cont | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
tomcat-cont | at java.lang.Thread.run(Thread.java:748)
tomcat-cont | Caused by: org.apache.catalina.LifecycleException: Failed to start component [[email protected]]
tomcat-cont | at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
tomcat-cont | at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:5016)
tomcat-cont | at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5149)
tomcat-cont | at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
tomcat-cont | ... 10 more
tomcat-cont | Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [[email protected]]
tomcat-cont | at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
tomcat-cont | at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:135)
tomcat-cont | at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:722)
tomcat-cont | at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
tomcat-cont | ... 13 more
tomcat-cont | Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: error in opening zip file
tomcat-cont | at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:142)
tomcat-cont | at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
tomcat-cont | ... 16 more
tomcat-cont | Caused by: java.util.zip.ZipException: error in opening zip file
tomcat-cont | at java.util.zip.ZipFile.open(Native Method)
tomcat-cont | at java.util.zip.ZipFile.<init>(ZipFile.java:225)
tomcat-cont | at java.util.zip.ZipFile.<init>(ZipFile.java:155)
tomcat-cont | at java.util.jar.JarFile.<init>(JarFile.java:166)
tomcat-cont | at java.util.jar.JarFile.<init>(JarFile.java:130)
tomcat-cont | at org.apache.tomcat.util.compat.JreCompat.jarFileNewInstance(JreCompat.java:170)
tomcat-cont | at org.apache.tomcat.util.compat.JreCompat.jarFileNewInstance(JreCompat.java:155)
tomcat-cont | at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:139)
tomcat-cont | ... 17 more
tomcat-cont |
tomcat-cont | 10-Jul-2018 08:20:36.859 SEVERE [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Error deploying web application archive /usr/local/tomcat/webapps/ROOT.war
tomcat-cont | java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].Stand
ardContext[]]
tomcat-cont | at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
tomcat-cont | at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:731)
tomcat-cont | at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
tomcat-cont | at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:973)
tomcat-cont | at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1850)
tomcat-cont | at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
tomcat-cont | at java.util.concurrent.FutureTask.run(FutureTask.java:266)
tomcat-cont | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
tomcat-cont | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
tomcat-cont | at java.lang.Thread.run(Thread.java:748)
tomcat-cont |
tomcat-cont | 10-Jul-2018 08:20:36.860 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive /usr/local/tomcat/webapps/ROOT.war has finish
ed in 105 ms
эта ошибка произошла, когда я захотел попробовать перезагрузить контейнер при создании новой войны.