![](/img/trans.png)
[英]Deploying Java webapp to Tomcat 8 running in Docker container
[英]Java webapp to Tomcat 8 running in Docker container at localhost
对于我的spring mvc app,我使用docker-compose.yml
db:
build: ./db
ports:
- "5432:5432"
volumes_from:
- app-db-data
app-web:
build: ./web
ports:
- "8080:8080"
links:
- db
app-db-data:
image: cogniteev/echo
command: echo 'Data Container for PostgreSQL'
volumes:
- /var/lib/postgresql/data
有两个Dockerfiles
FROM tomcat:8-jre8
MAINTAINER Sergii D
ADD MyApp-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/
FROM postgres:9.3
MAINTAINER Sergii D
ENV POSTGRES_USER admin
ENV POSTGRES_PASSWORD pass
ENV POSTGRES_DB mydb
首先,我做docker-compose build
第二个docker-compose up
之后,应用程序工作不正确在http://192.168.99.100:8080/MyApp-1.0-SNAPSHOT/
但我需要以root身份使用http:// localhost:8080 /
我该如何配置tomcat?
尝试将“MyApp-1.0-SNAPSHOT.war”重命名为ROOT.war并将其添加到图像中。 您的应用程序将通过http://192.168.99.100:8080/获取
据我所知,你的解决方案很少。 "/MyApp-1.0-SNAPSHOT/"
实际上是部署应用程序的上下文路径 。
您可以将war文件重命名为ROOT.war
但这个解决方案有点棘手,我不会投票支持。
更好的解决方案是使用ROOT.xml
文件并将其添加到tomcat配置中。
所以你可以在Dockerfile
定义中添加以下内容
COPY ./ROOT.xml /usr/local/tomcat/conf/Catalina/localhost/ROOT.xml
并且ROOT.xml
的内容应该是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<Context
docBase="/opt/webapps/MyApp-1.0-SNAPSHOT"
path=""
reloadable="true" />
由于您在docker-compose
使用"ports"
将docker容器中的映射端口映射到主机,因此您可以通过http://localhost:8080
访问后端。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.