首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Tomcat和PostgreSQL在Docker上部署应用程序

用Tomcat和PostgreSQL在Docker上部署应用程序
EN

Stack Overflow用户
提问于 2017-09-21 14:25:21
回答 1查看 5.6K关注 0票数 3

我有一个testApp.war,我想通过在Tomcat上部署它(docker在10.0.2.157上)。我的testApp只适用于postgres DB和指定的用户testUser和密码testUserPasswd。我建造了这样一座建筑:

代码语言:javascript
运行
复制
.
├── db
│   ├── Dockerfile
│   ├── pg_hba.conf
│   └── postgresql.conf
├── docker-compose.yml
└── web
    ├── context.xml
    ├── Dockerfile
    ├── software
    │   └── testApp.war
    └── tomcat-users.xml

所有这些文件的内容附后。我用命令启动容器:

代码语言:javascript
运行
复制
docker-compose up -d

然而,当我访问Tomcat (http://10.0.2.157:8282/manager/html)并尝试启动我的testApp时,我得到了:

HTTP状态404 -未找到 类型状态报告 信息/测试应用程序/ 源服务器没有找到目标资源的当前表示形式,或者不愿意泄露存在的表示形式。 Apache Tomcat/8.5.20

我做错什么了?你能帮我吗?

db/Dockerfile

代码语言:javascript
运行
复制
FROM postgres:9.5
MAINTAINER riwaniak

ENV POSTGRES_USER testUser
ENV POSTGRES_PASSWORD testUserPasswd
ENV POSTGRES_DB testUser

ADD pg_hba.conf /etc/postgresql/9.5/main/
ADD postgresql.conf /etc/postgresql/9.5/main/

db/pg_hba.conf

代码语言:javascript
运行
复制
local   all             all                                     trust
host    all             all             127.0.0.1/32            md5
host    all             all             0.0.0.0/0               md5
host    all

db/postgresql.conf

代码语言:javascript
运行
复制
listen_addresses='*'

web/context.xml

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>

<Context antiResourceLocking="false" privileged="true" >
<!--
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
</Context>

web/Dockerfile

代码语言:javascript
运行
复制
FROM tomcat:8.5.20-jre8
MAINTAINER riwaniak

COPY ./software /usr/local/tomcat/webapps/

CMD ["catalina.sh", "run"]

web/tomcat-users.xml

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">

  <role rolename="tomcat"/>
  <role rolename="admin-gui"/>
  <role rolename="manager-gui"/>

  <user username="tomcat" password="tomcat" roles="tomcat,admin-gui,manager-gui"/>

</tomcat-users>

最后是docker-compose.yml

代码语言:javascript
运行
复制
version: '2'
services:
    testApp:
        build: ./web
        volumes:
          - /path/to/tomcat/folder/web/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml
          - /path/to/tomcat/folder/web/context.xml:/usr/local/tomcat/webapps/HelpdeskApp/META-INF/context.xml
          - /path/to/tomcat/folder/web/context.xml:/usr/local/tomcat/webapps/host-manager/META-INF/context.xml
          - /path/to/tomcat/folder/web/context.xml:/usr/local/tomcat/webapps/manager/META-INF/context.xml
        ports:
          - "8282:8080"
        links:
          - testAppdb
        networks:
          - testAppnet

    testAppdb:
        build: ./db
        ports:
          - "5555:5432"
        volumes:
          - /srv/docker/postgresql:/var/lib/postgresql
          - /path/to/tomcat/folder/db/postgresql.conf:/etc/postgresql/9.5/main/postgresql.conf
          - /path/to/tomcat/folder/db/pg_hba.conf:/etc/postgresql/9.5/main/pg_hba.conf
        command: postgres -c config_file=/etc/postgresql/9.5/main/postgresql.conf
        networks:
          - testAppnet

networks:
    testAppnet:
      driver: bridge
      ipam:
        driver: default
        config:
          - subnet: 172.28.0.0/16
EN

Stack Overflow用户

回答已采纳

发布于 2017-09-28 08:17:31

,好的,我找到解决办法了!

谢谢你的支持和建议。

我在Tomcat容器中有错误的application.yml配置。Docker映射了我的容器的ip地址,但我不应该只写"10.0.2.157“,而是编写容器的名称。因此,在我的例子中,我得到了如下所示:

代码语言:javascript
运行
复制
(...)
environments:
    development:
        dataSource:
            dbCreate: update
            url: jdbc:postgresql://10.0.2.157:5432/helpdesk_dev
(...)

然而,正确的解决方案是映射postgres容器 (testAppdb)的名称,因此正确的conf是:

代码语言:javascript
运行
复制
(...)
environments:
    development:
        dataSource:
            dbCreate: update
            url: jdbc:postgresql://testAppdb:5432/test_dev
(...)
票数 4
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46346522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档