繁体   English   中英

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

[英]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

  1. ./web
    FROM tomcat:8-jre8
    MAINTAINER Sergii D

    ADD MyApp-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/
  1. 。/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/

但我需要以root身份使用http:// localhost:8080 /

我该如何配置tomcat?

尝试将“MyApp-1.0-SNAPSHOT.war”重命名为ROOT.war并将其添加到图像中。 您的应用程序将通过http://192.168.99.100:8080/获取

http:// localhost: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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM