簡體   English   中英

在 Docker 上運行時嘗試代理請求時發生錯誤

[英]Error occurred while trying to proxy request while running on Docker

我正在嘗試將我的 React + Spring 引導應用程序部署到 docker。 然而,來自后端的 api 似乎沒有與我的 React 應用程序連接,盡管我已經檢查了 Spring 引導服務器的端口 8080 並檢查了 React 應用程序中的 proxy.js。 它不斷執行“嘗試代理請求時發生錯誤”錯誤。 請幫我回答這個問題!

這是proxy.js

export default {
  dev: {
    '/api/': {
      target: 'http://localhost:8080/',
      changeOrigin: true,
      pathRewrite: {
        '^': '',
      },
    },
  }
}

這是 React App 的 dockerfile

FROM node:12

# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./

RUN npm install
# If you are building your code for production
# RUN npm ci --only=production

# Bundle app source
COPY . .

EXPOSE 8000
ENTRYPOINT npm run dev

后端 Dockerfile

FROM openjdk:8-jdk-alpine
EXPOSE 8080
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

和 docker-compose.yml 文件

version: "3"

services:
  server:
    build: 
      context: ./service
      dockerfile: ./Dockerfile
    ports:
      - "8080:8080"
    image: academy-server
  client:
    build: 
      context: ./web
      dockerfile: ./Dockerfile
    ports:
      - "8000:8000"
    image: academy-client
    links: 
      - "server"

在 Docker 中運行就像在兩台不同的機器上運行前端和后端一樣。 因此,您不能使用 localhost 與您的后端對話。 相反,您需要使用 docker-compose 中定義的服務名稱。 因此,在您的情況下,您應該使用“服務器”而不是 localhost。

Docker-compose 自動創建一個內部網絡,將您的兩個容器連接到該網絡並使用服務名稱在容器之間進行路由

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM