【问题标题】:docker compose not starting both applicationdocker compose 没有启动两个应用程序
【发布时间】:2021-04-04 23:08:27
【问题描述】:

我的应用程序有以下文件夹结构。

  • 根文件夹
    • docker-compose.yml
    • rest-api-项目
      • Dockerfile
    • react-ui-project
      • Dockerfile

rest-api-project 在 7070 端口上运行,react-ui-project 在 8080 端口上运行。

用于 rest-api-project 的 Dockerfile

FROM java:8-jdk-alpine

COPY ./Rest-Api/target/Rest-Api-0.0.1-SNAPSHOT.jar /usr/app/

WORKDIR /usr/app

RUN sh -c 'touch Rest-Api-0.0.1-SNAPSHOT.jar'
EXPOSE 7070:7070

ENTRYPOINT ["java","-jar","Rest-Api-0.0.1-SNAPSHOT.jar"]

react-ui-project 的 Dockerfile

FROM node:lts-alpine as build
RUN mkdir /react-ui
WORKDIR /react-ui
COPY package.json .
RUN npm install
COPY . .
EXPOSE 8080:8080
CMD ["npm","start"]

docker-compose.yml

version: "3.0"
services:
    reactui:
        build:            
            dockerfile: Dockerfile
            context: ./react-ui-project
        ports:
            - "8080:8080"
    restapi:
        build:
            dockerfile: Dockerfile
            context: ./rest-api-project
        ports:
            - "7070:7070"

我正在运行docker-compose up 命令。 两个应用程序都正常启动。 当我在软管浏览器中尝试 localhost:8080 时,我没有看到反应应用程序正在运行。 但如果我尝试使用localhost:7070,那么我会从 rest-api-project 获得示例响应。

我不明白为什么 localhost:8080 上的 react 应用程序没有出现。

【问题讨论】:

  • 您确定您的应用正在监听 8080 吗?是使用0.0.0.0 还是127.0.0.1
  • 它从本地主机开始。我正在使用 webpack 启动反应应用程序。正如我在日志中看到的那样,它从 localhost:8080 开始,我没有在 devServer 下为 webpack 提供任何主机
  • 你能把它改成0.0.0.0
  • 0.0.0.0 不工作。
  • 现在工作,再次重建整个图像。制作 0.0.0.0 而不是 localhost webpack。

标签: reactjs spring-boot docker docker-compose


【解决方案1】:

为了从外部接口获得访问权限,您需要确保将主机设置为"0.0.0.0" 而不是"localhost""127.0.0.1"(出于安全原因,这是在开发环境中工作的正确方式)。

换句话说,只需确保您的应用正在监听:

0.0.0.0:8080

【讨论】:

  • 完成了几处更改。一个由您提供,另一个由@Greg 提供。
【解决方案2】:

在 Dockerfiles 中,将 EXPOSE 7070:7070 更改为 EXPOSE 7070 并将 EXPOSE 8080:8080 更改为 EXPOSE 8080。端口绑定应该在 docker-compose (如您所愿)或运行命令中完成。

【讨论】:

  • 已应用更改。 localhost:7070 工作,但 localhost:8080 不工作。
  • 你确定你的restapi正在监听7070端口吗?服务器在 8080 端口上运行是很常见的。也许您可以尝试在 restapi Dockerfile 中公开端口 8080,并将 docker-compose.yml 中的 restapi 端口绑定为“7070:8080”。
  • 现在工作,再次重建,它工作完美。
猜你喜欢
  • 2016-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 2022-09-30
相关资源
最近更新 更多