运行在localhost的Docker容器中的Tomcat 8的Java webapp

时间:2017-02-02 16:31:30

标签: java tomcat docker

对于我的春季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

  1. ./网络
  2.     FROM tomcat:8-jre8
        MAINTAINER Sergii D
    
        ADD MyApp-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/
    
    1. ./分贝
    2. 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?

2 个答案:

答案 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访问后端。