Java webapp到在本地主机上的Docker容器中运行的Tomcat 8
对于我的springmvc应用程序,我使用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
- ./web
FROM tomcat:8-jre8 MAINTAINER Sergii D ADD MyApp-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/
- 。/D b
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/
但我需要使用http:// localhost:8080 /作为根
我如何configurationtomcat?
尝试将“MyApp-1.0-SNAPSHOT.war”重命名为ROOT.war并将其添加到图像。 您的应用程序将可通过http://192.168.99.100:8080/
另外http:// localhost:8080 /将可用。
据我所知,你有几个解决scheme。 "/MyApp-1.0-SNAPSHOT/"
实际上是您的应用程序部署的上下文path 。
-
你可以将你的war文件重命名为
ROOT.war
但这个解决方法有点棘手,我不会为此投票。 -
更好的解决scheme是将
ROOT.xml
文件添加到tomcatconfiguration中。
所以你可以添加以下到你的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容器中的端口映射到docker中的主机,并且使用"ports"
docker-compose
,您可以通过http://localhost:8080
访问后端。