【问题标题】:404 while contacting web-service container (docker)联系 Web 服务容器(docker)时出现 404
【发布时间】:2019-02-10 04:28:55
【问题描述】:

我正在尝试用 3 个容器构建一个 docker 应用程序:

  • troparo_app(网络服务)
  • library_app(网络客户端)
  • troparo_db (postgres db)

不知何故,我在尝试从应用程序连接到网络服务时收到 404。

网络服务从主机响应 ok:

http://localhost:8080/troparo_app/services

从 SOAP UI 测试它并且工作正常

对于网络客户端(library_app),我无法访问主页:

http://localhost:8090/library-web-1.0-SNAPSHOT/login

然后我得到一个 404:

org.apache.cxf.transport.http.HTTPException: HTTP response '404: null' when communicating with http://localhost:8080/troparo_app/services/connect/ConnectService

我的 docker-compose 如下:

# Version of docker-compose
version: '3'

services:
# getting postgres DB
db:
  image: postgres:11.1
#container_name: troparo_db
ports:
  - 5432:5432
environment:
  POSTGRES_USER: ocp
  POSTGRES_PASSWORD: 123
  POSTGRES_DB: troparo
  POSTGRES_INITDB_ARGS: --data-checksums
  PGDATA: /var/lib/postgresql/data/pgdata
volumes:
  - pg-data:/var/lib/postgresql/data
networks:
  - troparo

 # getting troparo image
 webservice:
 image: troparo_app
 container_name: troparo_app
 build: .
 ports:
 - 8080:8080
 depends_on:
  - db
 networks:
  - troparo


# getting troparo image
webapp:
image: library_app
container_name: library_app
build: ../webo/library/.
ports:
    - 8090:8080
depends_on:
  - webservice
networks:
  - troparo


volumes:  
pg-data:

networks:
troparo:

library_app 的 Dockerfile:

FROM tomcat:9.0.14-jre8
RUN rm -rf /usr/local/tomcat/webapps/*
COPY ./library-web/target/library-web-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/library-web-1.0-SNAPSHOT.war
CMD ["catalina.sh","run"]

troparo_app 的 Dockerfile:

FROM tomcat:9.0.14-jre8
RUN rm -rf /usr/local/tomcat/webapps/*
COPY ./troparo-web/target/troparo_app.war /usr/local/tomcat/webapps/troparo_app.war
CMD ["catalina.sh","run"]

我连接到客户端容器并 ping 服务 -> 好的 我尝试了几种连接网络服务的组合:

http://troparo_app:8080

http://localhost:8080

但到目前为止一切都失败了。

我是 docker 新手,所以我想我忘记在网络中配置一些东西,但到目前为止我还想不通,所以如果有人能提供帮助,我将不胜感激! 谢谢

【问题讨论】:

    标签: java web-services docker docker-compose


    【解决方案1】:

    经过更多的思考/测试,我终于让它工作了!!

    可以通过http://webservice:8080轻松访问网络服务

    【讨论】:

    • 我只是将 localhost(可用于从计算机主机连接到容器)替换为容器的名称,这里是 webservice(我在 docker-compose 上给出的名称),因为它们在同一个网络。
    猜你喜欢
    • 2010-10-19
    • 2018-01-24
    • 2019-02-07
    • 1970-01-01
    • 2022-12-20
    • 2018-01-17
    • 2018-04-20
    • 1970-01-01
    • 2020-03-17
    相关资源
    最近更新 更多