gpt4 book ai didi

docker - 无法获取两个 Docker 容器之间的连接

转载 作者:行者123 更新时间:2023-12-02 21:04:07 28 4
gpt4 key购买 nike

我有一个应用程序分为两部分:前端和后端。我的前端是一个 React JS 应用程序,我的后端是一个 Java Spring 启动应用程序。该项目在 Docker 中运行,有 3 个容器:前端、后端和 db(数据库)。我的问题是我不能做我的前端并向我的后端容器发送任何请求。下面是我的 Docker 配置文件:

docker 组成:

version: "3"

services:
db:
image: postgres:9.6
container_name: db
ports:
- "5433:5432"
environment:
- POSTGRES_PASSWORD=123
- POSTGRES_USER=postgres
- POSTGRES_DB=test

backend:
build:
context: ./backend
dockerfile: Dockerfile
container_name: backend
ports:
- "8085:8085"
depends_on:
- db

frontend:
container_name: frontend
build:
context: ./frontend
dockerfile: Dockerfile
expose:
- "80"
ports:
- "80:80"
links:
- backend
depends_on:
- backend

Dockerfile 前端:
# Stage 0, "build-stage", based on Node.js, to build and compile the frontend
FROM node:8.12.0 as build-stage

WORKDIR /app

COPY package*.json /app/

RUN yarn

COPY ./ /app/

RUN yarn run build

# Stage 1, based on Nginx, to have only the compiled app, ready for production with Nginx
FROM nginx

RUN rm -rf /usr/share/nginx/html/*

COPY --from=build-stage /app/build/ /usr/share/nginx/html

# Copy the default nginx.conf provided by tiangolo/node-frontend
COPY --from=build-stage /app/nginx.conf /etc/nginx/conf.d/default.conf

Dockerfile 后端:
FROM openjdk:8
ADD /build/libs/reurb-sj-13-11-19.jar reurb-sj-13-11-19.jar
EXPOSE 8085
ENTRYPOINT ["java", "-jar", "reurb-sj-13-11-19.jar", "--app.db.host=

是前端我尝试向这些 IP 发送请求:
  • 本地主机:8085
  • 172.18.0.3:8085
  • 172.18.0.3
  • 0.0.0.0:8085

  • 当我尝试从前端发送请求时,它“启动”并等待大约 10 秒,然后返回错误。奇怪的是我的请求没有返回任何状态。

    PS.:我已经阅读了所有互联网,每个人都说要放置 EXPOSE、PORTS 和 LINKS(在 docker-compose 内),我已经尝试过,但仍然无法正常工作。

    最佳答案

    您需要连接到 backend:8085 .

    --

    您不应该使用 IP 连接到您的服务,而是使用 docker-compose 文件中列出的服务名称。

    注意:如果使用 localhost ,指的是前端容器本身。通常 0.0.0.0用于绑定(bind)到所有 IP 或表示任何 IP 地址,而不是连接到特定 IP。

    所以在你的前端代码中,你需要使用backend作为主机名(例如,backend:8085)。

    看起来您已经链接了您的服务,因此网络应该不是问题。我的建议是始终使用以下方法在容器内进行测试:

    docker-compose exec frontend bash
    # You may need to install packages
    ping backend
    telnet backend 8085

    关于docker - 无法获取两个 Docker 容器之间的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59075981/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com