【发布时间】:2021-04-10 16:36:00
【问题描述】:
我正在使用这个目录方案开发一个网站:
.
├── api
│ ├── here is my backend application
│ └── Dockerfile,
├── client
│ ├── here is my frontend application
│ └── Dockerfile
├── docker-compose
我在 NuxtJS 中有这个 Dockerfile 的前端:
FROM node:10
# Create app directory
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
RUN npm run build
ENV HOST 0.0.0.0
EXPOSE 3000
# start command
CMD [ "npm", "start"]
我的后端是带有这个 Dockerfile 的strapi:
FROM strapi/base:latest
# Create app directory
WORKDIR /app
COPY package.json /app
# install
RUN npm install
COPY . /app
# RUN rm yarn.lock
# RUN npm
RUN npm run build
ENV HOST 0.0.0.0
EXPOSE 1337
# start command
CMD [ "npm", "start"]
最后这是我的 docker-compose.yaml 文件:
version: '3'
services:
frontend:
build:
context: ./client
dockerfile: Dockerfile
volumes:
- ./client:/app
- /app/node_modules
- /app/.nuxt
stdin_open: true
tty: true
environment:
- HOST=0.0.0.0
- CHOKIDAR_USEPOLLING=true
ports:
- 3000:3000
depends_on:
- "backend"
backend:
build:
context: ./api
dockerfile: Dockerfile
volumes:
- ./api:/app
- /app/node_modules
stdin_open: true
tty: true
environment:
- HOST=0.0.0.0
- CHOKIDAR_USEPOLLING=true
ports:
- 1337:1337
当我尝试分别构建两个图像然后运行它们时,一切正常,前端能够调用后端。但是,如果我尝试使用 docker-compose up 使用 docker-compose,前端和后端都会启动,但前端无法访问后端。你能帮我看看有什么问题吗?为什么?
谢谢
【问题讨论】:
-
你得到的错误到底是什么,你在哪里看到的?后端服务器的位置如何配置?
-
您的前端使用哪个主机名来尝试访问后端?在 Compose 中,它可以在 backend:1337(= 容器名称)下访问。您在前端应用程序中使用了什么以及仅通过 docker 运行时如何启动它们,它在哪里工作?
-
这是错误我得到服务器错误:应用程序中发生错误,无法提供您的页面。如果您是应用程序所有者,请查看您的日志以了解详细信息。
-
是的,后端可以通过我的浏览器在 localhost:1337 下访问
-
这是我前端页面的屏幕,我向后端发送请求。 imgur.com/a/fbDJb7V其他没有使用axios请求的页面也可以正常使用
标签: docker