我们正在try 对接NestJS REST API和VueJS应用程序.
为此,有一个docker-compose.yaml和两个Docker文件:
docker-compose.yml:个
version: '3.8'
services:
fox-deck-app:
build:
context: .
dockerfile: app.Dockerfile
ports:
- "80:80"
networks:
- fox-deck-network
depends_on:
- fox-deck-api
fox-deck-api:
build:
context: .
dockerfile: api.Dockerfile
ports:
- "3000:3000"
networks:
- fox-deck-network
networks:
fox-deck-network:
driver: bridge
app.Dockerfile:个
FROM node:20.11.1-alpine3.19 as build-stage
WORKDIR /app
COPY apps/fox-deck-app/package*.json ./
RUN npm install --prefer-offline --no-audit --progress=false
COPY apps/fox-deck-app/ .
RUN npm run build
FROM nginx:alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
RUN rm /etc/nginx/conf.d/default.conf
COPY apps/fox-deck-app/default.conf /etc/nginx/conf.d/
EXPOSE 80
api.Dockerfile:个
FROM node:20.11.1-alpine3.19 as api-stage
WORKDIR /usr/src/app
COPY apps/fox-deck-api/package*.json ./
RUN npm ci --prefer-offline --no-audit --progress=false
COPY apps/fox-deck-api/ .
COPY apps/fox-deck-api/.env.example /usr/src/app/.env
RUN npm rebuild # Rebuilds all native dependencies, used because we use c++ libraries
RUN npm run prisma:migrate
EXPOSE 3000
CMD ["npm", "run", "start:dev"]
在VueJS应用程序中,有一个反向代理将所有请求重定向到API,而不是/api
.VueJS应用通过nginx提供服务.因此,这里也有一个nginx.config:
default.conf:个
server {
listen 80;
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://fox-deck-api:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
这两个容器也会启动,但是对/api/login
的请求没有被正确地重定向,并且您会得到404错误.已经有各种try 对VueJS URL的反向代理nginx.config进行调整,但到目前为止我们还没有找到解决方案.
完整的更改也可以在GitHub:https://github.com/Foxdeck/fox-deck/pull/47上找到