对于我的春季mvc应用,我使用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?
答案 0 :(得分:0)
尝试重命名" MyApp-1.0-SNAPSHOT.war"到ROOT.war并将其添加到图像。您的应用将通过http://192.168.99.100:8080/
提供此外,http://localhost:8080/也可用。
答案 1 :(得分:0)
据我所知,你的解决方案很少。
"/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
将端口从docker容器映射到"ports"
的主机,您可以通过http://localhost:8080
访问后端。