I';我在Docker Compose中得到'ERR_EMPTY_RESPONSE',即使这两个单独的容器在单独运行时可以工作

I';我在Docker Compose中得到'ERR_EMPTY_RESPONSE',即使这两个单独的容器在单独运行时可以工作,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,所以我有一个基本的前端和后端。后端依赖于一些环境变量,这是我的docker compose.yml 版本:“3.9” 服务: 后端: 环境文件: -环境署署长 建造: 上下文:./后端 容器名称:fastapi 端口: - 80:80 前端: 建造: 上下文:/前端 容器名称:vue ui 端口: - 8080:8080 链接: -后端 当我转到http://127.0.0.1:8080/,但是,当我为我的前端和后端运行单独的DockerFile时,这一切进展顺利 我的前端 FROM node

所以我有一个基本的前端和后端。后端依赖于一些环境变量,这是我的
docker compose.yml

版本:“3.9”
服务:
后端:
环境文件:
-环境署署长
建造:
上下文:./后端
容器名称:fastapi
端口:
- 80:80
前端:
建造:
上下文:/前端
容器名称:vue ui
端口:
- 8080:8080
链接:
-后端
当我转到
http://127.0.0.1:8080/
,但是,当我为我的前端和后端运行单独的DockerFile时,这一切进展顺利

我的前端

FROM node:lts-alpine

# install simple http server for serving static content
RUN npm install -g http-server

# make the 'frontend' folder the current working directory
WORKDIR /frontend

# copy both 'package.json' and 'package-lock.json' (if available)
COPY package*.json ./

# install project dependencies
RUN npm install

# copy project files and folders to the current working directory (i.e. 'app' folder)
COPY . .

# build app for production with minification
RUN npm run build

EXPOSE 8080
CMD [ "http-server", "dist" ]
我的后端

FROM tiangolo/uvicorn-gunicorn:python3.8

LABEL maintainer="Sebastian Ramirez <tiangolo@gmail.com>"

WORKDIR /backend

COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt

COPY . .
EXPOSE 80
额外的0来自哪里

这就是我分别运行两个容器时发生的情况

通过查看
docker ps
输出,我猜您在配置中意外地为后端和前端切换了端口。前端有未映射的端口
80
,后端有未映射的端口
8080

试试这个:

版本:“3.9”
服务:
后端:
环境文件:
-环境署署长
建造:
上下文:./后端
容器名称:fastapi
端口:
- 8080:8080
前端:
建造:
上下文:/前端
容器名称:vue ui
端口:
- 80:80
链接:
-后端

容器是否正确启动?执行
docker ps
命令检查已创建的容器。当我运行
docker compose up
时,在运行
docker ps
之后,我发现了两个容器,如预期的那样。您可以通过
localhost:80
访问后端吗?运气不好,请关闭docker compose部署吗(
docker compose down
)并验证所有容器是否已停止(
docker ps-a
->不应列出任何
fastapi
,如果存在,请将其删除:
docker rm
)?从OP:“…当我转到
http://127.0.0.1:8080/
…”-前端似乎有意运行在端口
8080
上。从OP的屏幕截图中,您可以看到前端容器正在侦听容器内的80端口和8080上的后端。这些端口未映射,所以我猜它是意外切换的。啊!很好!现在我可以查看前端,但为什么它从f发送重定向将请求发送到
http://127.0.0.1:8000/
当我的后端仅与
http://127.0.0.1:80/
(使用curl测试)刚刚用最新的内容更新了我的帖子happening@A.K.M.Adib您在哪里看到端口
8000